<?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>145870</bug_id>
          
          <creation_ts>2015-06-10 20:55:01 -0700</creation_ts>
          <short_desc>Use NakedPtr&lt;Exception&gt;&amp; to return exception results.</short_desc>
          <delta_ts>2015-06-16 13:53:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kling</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1101214</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-10 20:55:01 -0700</bug_when>
    <thetext>Before r185259, calls into the VM takes a JSValue* exceptionResult argument for returning any uncaught exception that may have been thrown while executing JS code.  As a result, clients of the VM APIs will declare a local JSValue exceptionResult which is automatically initialized to a null value (i.e. the empty value, not the JS null value).  With r185259, the call APIs were changes to take an Exception*&amp; exceptionResult instead, and the VM functions are responsible for initializing the exceptionResult to null if no exception is thrown.  This introduces 2 issues:

1. the VM code is vulnerable to modifications that may add early returns before the exceptionResult is nullified.  This can result in the exceptionResult being used without initialization.

2. Previously, a client could technically use the same exceptionResult for more than one calls into the VM.  If an earlier call sets it to a thrown value, the thrown value will stick unless a subsequent call throws a different exception.  With the new Exception*&amp; exceptionResult, the VM calls will always clear the exceptionResult before proceeding.  As a result, the client&apos;s exceptionResult will be null after the second call even though the first call saw an exception thrown.  This is a change in expected behavior.

To fix these issues, we&apos;ll introduce an ExceptionResult class which embeds and auto-initializes an Exception*.  The VM calls will be reverted to only set the exceptionResult if a new exception is thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101224</commentid>
    <comment_count>1</comment_count>
      <attachid>254706</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-10 21:50:17 -0700</bug_when>
    <thetext>Created attachment 254706
candidate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101361</commentid>
    <comment_count>2</comment_count>
      <attachid>254706</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-06-11 12:38:47 -0700</bug_when>
    <thetext>Comment on attachment 254706
candidate patch.

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

&gt; Source/JavaScriptCore/runtime/ExceptionResult.h:35
&gt; +template &lt;typename T&gt;
&gt; +class Ptr {
&gt; +public:

I think this template will be useful in WTF as well.  e.g. NodeRareData could use this for m_childNodeList.

&gt; Source/JavaScriptCore/runtime/ExceptionResult.h:61
&gt; +class ExceptionResult : public Ptr&lt;Exception&gt; {

I think it&apos;s better to call this ExceptionPtr or ExceptionResultPtr so that overloading operators are easier to reason about in callsites.
It seems like we can just use typedef??  Or maybe we should just use Ptr&lt;Exceptoin&gt; directly since Ptr seems useful elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101794</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-12 23:06:53 -0700</bug_when>
    <thetext>Since there is a use for the self initializing pointer class in the rest of the code base, I think it is a good idea to implement the pointer class in WTF.  However, it turns out that we can&apos;t use Ptr as the class name because there is a collision with a typedef in MacTypes.h.

In consultation with Anders and Andreas, we settled on NakedPtr as a good name to go with for now.  naked_ptr is one of the alternate names for this concept in the proposal to add this pointer class to the C++ stdlib (see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3514.pdf).

Will upload an updated patch for review again (since I&apos;ve made substantial changes to the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101795</commentid>
    <comment_count>4</comment_count>
      <attachid>254851</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-12 23:08:13 -0700</bug_when>
    <thetext>Created attachment 254851
patch 2: using NakedPtr&lt;Exception&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101800</commentid>
    <comment_count>5</comment_count>
      <attachid>254851</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-12 23:15:20 -0700</bug_when>
    <thetext>Comment on attachment 254851
patch 2: using NakedPtr&lt;Exception&gt;.

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

&gt; Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:369
&gt; -&lt;/Project&gt;
&gt;  \ No newline at end of file
&gt; +&lt;/Project&gt;

Will remove this unnecessary change before landing.

&gt; Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters:181
&gt; -&lt;/Project&gt;
&gt;  \ No newline at end of file
&gt; +&lt;/Project&gt;

Will remove this unnecessary change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102298</commentid>
    <comment_count>6</comment_count>
      <attachid>254851</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-16 11:45:00 -0700</bug_when>
    <thetext>Comment on attachment 254851
patch 2: using NakedPtr&lt;Exception&gt;.

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

&gt; Source/WTF/wtf/NakedPtr.h:57
&gt; +    // This conversion operator allows implicit conversion to bool but not to other integer types.
&gt; +    typedef T* (NakedPtr::*UnspecifiedBoolType);
&gt; +    operator UnspecifiedBoolType() const { return m_ptr ? &amp;NakedPtr::m_ptr : nullptr; }

Instead of this, please add an explicit operator bool() const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102316</commentid>
    <comment_count>7</comment_count>
      <attachid>254962</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-16 13:12:04 -0700</bug_when>
    <thetext>Created attachment 254962
patch 3: applied Anders&apos; feedback.

Thanks for the feedback.  The patch has been updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102317</commentid>
    <comment_count>8</comment_count>
      <attachid>254962</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-16 13:16:50 -0700</bug_when>
    <thetext>Comment on attachment 254962
patch 3: applied Anders&apos; feedback.

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

R=me but please consider the two suggestions.

&gt; Source/WTF/wtf/NakedPtr.h:33
&gt; +template &lt;typename T&gt; class NakedPtr {

Please add a comment up here about what this is for.  In particular, that it initializes the pointer to null.

&gt; Source/WTF/wtf/NakedPtr.h:53
&gt; +    bool operator!() const { return !m_ptr; }

Can we use UnspecifiedNullType here, to prevent accidental coercions to null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102322</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-16 13:25:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 254851 [details]
&gt; patch 2: using NakedPtr&lt;Exception&gt;.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254851&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/NakedPtr.h:57
&gt; &gt; +    // This conversion operator allows implicit conversion to bool but not to other integer types.
&gt; &gt; +    typedef T* (NakedPtr::*UnspecifiedBoolType);
&gt; &gt; +    operator UnspecifiedBoolType() const { return m_ptr ? &amp;NakedPtr::m_ptr : nullptr; }
&gt; 
&gt; Instead of this, please add an explicit operator bool() const.

Oh, I saw that I had the opposite feedback.  Why is explicit operator bool() better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102331</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-16 13:35:35 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; &gt; Source/WTF/wtf/NakedPtr.h:53
&gt; &gt; +    bool operator!() const { return !m_ptr; }
&gt; 
&gt; Can we use UnspecifiedNullType here, to prevent accidental coercions to null?

operator! will only be called when you use the ! operator.

(In reply to comment #9)
&gt; 
&gt; Oh, I saw that I had the opposite feedback.  Why is explicit operator bool()
&gt; better?

I find that it&apos;s easier to read while still having the same guarantees agents accidental conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102332</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-16 13:37:53 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; 
&gt; &gt; &gt; Source/WTF/wtf/NakedPtr.h:53
&gt; &gt; &gt; +    bool operator!() const { return !m_ptr; }
&gt; &gt; 
&gt; &gt; Can we use UnspecifiedNullType here, to prevent accidental coercions to null?
&gt; 
&gt; operator! will only be called when you use the ! operator.

Sorry, I meant to put that comment on &quot;operator bool()&quot;.  By mistake, I put it on operator!().

&gt; 
&gt; (In reply to comment #9)
&gt; &gt; 
&gt; &gt; Oh, I saw that I had the opposite feedback.  Why is explicit operator bool()
&gt; &gt; better?
&gt; 
&gt; I find that it&apos;s easier to read while still having the same guarantees
&gt; agents accidental conversion.

Does this mean that we should eliminate all of our uses of UnspecifiedNullType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102335</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-16 13:41:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Oh, I saw that I had the opposite feedback.  Why is explicit operator bool()
&gt; &gt; &gt; better?
&gt; &gt; 
&gt; &gt; I find that it&apos;s easier to read while still having the same guarantees
&gt; &gt; agents accidental conversion.
&gt; 
&gt; Does this mean that we should eliminate all of our uses of
&gt; UnspecifiedNullType?

I am pretty sure it does. UnspecifiedNullType was a workaround for the lack of the &quot;explicit operator bool()&quot; feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102336</commentid>
    <comment_count>13</comment_count>
      <attachid>254966</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-16 13:42:09 -0700</bug_when>
    <thetext>Created attachment 254966
patch for landing.

For the record, in the previous patch, I neglected to add the &quot;explicit&quot; keyword to operator bool().  That has been remedied in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102341</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-16 13:53:03 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r185608: &lt;http://trac.webkit.org/r185608&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254706</attachid>
            <date>2015-06-10 21:50:17 -0700</date>
            <delta_ts>2015-06-12 23:08:13 -0700</delta_ts>
            <desc>candidate patch.</desc>
            <filename>bug-145870.patch</filename>
            <type>text/plain</type>
            <size>47573</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NDQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDE1LTA2LTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBFeGNlcHRpb25SZXN1bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgcjE4NTI1OSwgY2FsbHMgaW50byB0aGUgVk0gdGFr
ZXMgYSBKU1ZhbHVlKiBleGNlcHRpb25SZXN1bHQgYXJndW1lbnQgZm9yCisgICAgICAgIHJldHVy
bmluZyBhbnkgdW5jYXVnaHQgZXhjZXB0aW9uIHRoYXQgbWF5IGhhdmUgYmVlbiB0aHJvd24gd2hp
bGUgZXhlY3V0aW5nIEpTIGNvZGUuCisgICAgICAgIEFzIGEgcmVzdWx0LCBjbGllbnRzIG9mIHRo
ZSBWTSBmdW5jdGlvbnMgd2lsbCBkZWNsYXJlIGEgbG9jYWwgSlNWYWx1ZSBleGNlcHRpb25SZXN1
bHQKKyAgICAgICAgd2hpY2ggaXMgYXV0b21hdGljYWxseSBpbml0aWFsaXplZCB0byBhIG51bGwg
dmFsdWUgKGkuZS4gdGhlIGVtcHR5IHZhbHVlLCBub3QgdGhlCisgICAgICAgIEpTIG51bGwgdmFs
dWUpLgorCisgICAgICAgIFdpdGggcjE4NTI1OSwgdGhlIFZNIGZ1bmN0aW9ucyB3ZXJlIGNoYW5n
ZWQgdG8gdGFrZSBhbiBFeGNlcHRpb24qJiBleGNlcHRpb25SZXN1bHQKKyAgICAgICAgaW5zdGVh
ZCwgYW5kIHRoZSBWTSBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcg
dGhlIGV4Y2VwdGlvblJlc3VsdAorICAgICAgICB0byBudWxsIGlmIG5vIGV4Y2VwdGlvbiBpcyB0
aHJvd24uCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIDIgaXNzdWVzOgorCisgICAgICAgIDEu
IHRoZSBWTSBmdW5jdGlvbnMgYXJlIHZ1bG5lcmFibGUgdG8gbW9kaWZpY2F0aW9ucyB0aGF0IG1h
eSBhZGQgZWFybHkgcmV0dXJucworICAgICAgICAgICBiZWZvcmUgdGhlIGV4Y2VwdGlvblJlc3Vs
dCBpcyBudWxsaWZpZWQuICBUaGlzIGNhbiByZXN1bHQgaW4gdGhlIGV4Y2VwdGlvblJlc3VsdAor
ICAgICAgICAgICBiZWluZyB1c2VkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uCisKKyAgICAgICAg
Mi4gUHJldmlvdXNseSwgYSBjbGllbnQgY291bGQgdGVjaG5pY2FsbHkgdXNlIHRoZSBzYW1lIGV4
Y2VwdGlvblJlc3VsdCBmb3IgbW9yZQorICAgICAgICAgICB0aGFuIG9uZSBjYWxscyBpbnRvIHRo
ZSBWTSBmdW5jdGlvbnMuICBJZiBhbiBlYXJsaWVyIGNhbGwgc2V0cyBpdCB0byBhIHRocm93bgor
ICAgICAgICAgICB2YWx1ZSwgdGhlIHRocm93biB2YWx1ZSB3aWxsIHN0aWNrIHVubGVzcyBhIHN1
YnNlcXVlbnQgY2FsbCB0aHJvd3MgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgZXhjZXB0aW9uLgor
CisgICAgICAgICAgIFdpdGggdGhlIG5ldyBFeGNlcHRpb24qJiBleGNlcHRpb25SZXN1bHQsIHRo
ZSBWTSBmdW5jdGlvbnMgd2lsbCBhbHdheXMgY2xlYXIgdGhlCisgICAgICAgICAgIGV4Y2VwdGlv
blJlc3VsdCBiZWZvcmUgcHJvY2VlZGluZy4gIEFzIGEgcmVzdWx0LCB0aGUgY2xpZW50J3MgZXhj
ZXB0aW9uUmVzdWx0CisgICAgICAgICAgIHdpbGwgYmUgbnVsbCBhZnRlciB0aGUgc2Vjb25kIGNh
bGwgZXZlbiB0aG91Z2ggdGhlIGZpcnN0IGNhbGwgc2F3IGFuIGV4Y2VwdGlvbgorICAgICAgICAg
ICB0aHJvd24uICBUaGlzIGlzIGEgY2hhbmdlIGluIHRoZSBleHBlY3RlZCBiZWhhdmlvci4KKwor
ICAgICAgICBUbyBmaXggdGhlc2UgaXNzdWVzLCB3ZSdsbCBpbnRyb2R1Y2UgYW4gRXhjZXB0aW9u
UmVzdWx0IGNsYXNzIHdoaWNoIGVtYmVkcyBhbmQKKyAgICAgICAgYXV0by1pbml0aWFsaXplcyBh
biBFeGNlcHRpb24qLiAgVGhlIFZNIGZ1bmN0aW9ucyAgd2lsbCBub3cgdGFrZSBhbiBFeGNlcHRp
b25SZXN1bHQmCisgICAgICAgIGluc3RlYWQgb2YgdGhlIEV4Y2VwdGlvbiomLiAgVGhpcyBlbnN1
cmVzIHRoYXQgdGhlIGV4Y2VwdGlvblJlc3VsdCBpcyBpbml0aWFsaXplZC4KKworICAgICAgICBU
aGUgVk0gZnVuY3Rpb25zIGJlIGFsc28gcmV2ZXJ0ZWQgdG8gb25seSBzZXQgdGhlIGV4Y2VwdGlv
blJlc3VsdCBpZiBhIG5ldworICAgICAgICBleGNlcHRpb24gaXMgdGhyb3duLgorCisgICAgICAg
ICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgIChKU0V2YWx1YXRlU2NyaXB0KToKKyAgICAgICAg
KiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6
OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0Jy
ZWFrcG9pbnQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6dGhpc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1
YXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6aXNWYWxpZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6
OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dGhpc1ZhbHVl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24pOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvblJ1bik6CisgICAgICAgIChmdW5jdGlv
bkxvYWQpOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAocnVuSW50ZXJhY3Rp
dmUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpjYWxs
KToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpl
dmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgIChKU0M6
OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblJlc3VsdC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6UHRyOjpQdHIpOgorICAgICAgICAoSlNDOjpQdHI6Om9wZXJhdG9yKik6
CisgICAgICAgIChKU0M6OlB0cjo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OlB0cjo6b3Bl
cmF0b3IgVCopOgorICAgICAgICAoSlNDOjpQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OlB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6CisgICAgICAgIChKU0M6OkV4Y2Vw
dGlvblJlc3VsdDo6RXhjZXB0aW9uUmVzdWx0KToKKwogMjAxNS0wNi0xMCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBz
Lmxlbmd0aCgpID4gMSBvbiBMYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MuaHRtbApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIkhl
YXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCkBAIC05MDgsNyArOTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAogICAg
ICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0
aW9uOworICAgIEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BX
YXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKICAgICBldmFsdWF0ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1
ZSgpLCBleGNlcHRpb24pOwpAQCAtOTMxLDcgKzkzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Mb2EKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCi0gICAgRXhjZXB0aW9uKiBldmFs
dWF0aW9uRXhjZXB0aW9uOworICAgIEV4Y2VwdGlvblJlc3VsdCBldmFsdWF0aW9uRXhjZXB0aW9u
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0x
Mjk0LDcgKzEyOTUsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3Qq
CiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAgIEV4Y2VwdGlvbiogZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgRXhjZXB0aW9uUmVzdWx0IGV2YWx1YXRpb25FeGNl
cHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpLCBKU1ZhbHVlKCks
IGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKICAgICAgICAgaWYgKGR1bXAgJiYgIWV2YWx1YXRpb25FeGNlcHRp
b24pCkBAIC0xMzU4LDcgKzEzNTksNyBAQCBzdGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9i
YWxPYmplY3QqCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIAotICAgICAgICBFeGNlcHRp
b24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgIEV4Y2VwdGlvblJlc3VsdCBldmFsdWF0
aW9uRXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlLCBpbnRlcnByZXRlck5h
bWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgcHJp
bnRmKCIlcyIsIGludGVyYWN0aXZlUHJvbXB0KTsKQEAgLTEzNzQsNyArMTM3NSw3IEBAIHN0YXRp
YyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAotICAgICAgICBFeGNlcHRpb24qIGV2YWx1YXRp
b25FeGNlcHRpb247CisgICAgICAgIEV4Y2VwdGlvblJlc3VsdCBldmFsdWF0aW9uRXhjZXB0aW9u
OwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGpzY1NvdXJjZShsaW5lLmRhdGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNW
YWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICNlbmRpZgogICAgICAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJl
dmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKQEAgLTY0LDcgKzY1LDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpTQ29udGV4
dFJlZgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xv
YmFsT2JqZWN0KCk7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+
c3RyaW5nKCksIHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4
dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1i
ZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKLSAgICBFeGNlcHRpb24qIGV2YWx1YXRp
b25FeGNlcHRpb247CisgICAgRXhjZXB0aW9uUmVzdWx0IGV2YWx1YXRpb25FeGNlcHRpb247CiAg
ICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJK
U0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU1NjcmlwdFJlZlBy
aXZhdGUuaCIKQEAgLTE0Myw3ICsxNDQsNyBAQCBKU1ZhbHVlUmVmIEpTU2NyaXB0RXZhbHVhdGUo
SlNDb250ZXh0UmVmCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KLSAgICBFeGNlcHRpb24qIGludGVybmFsRXhjZXB0aW9uOwor
ICAgIEV4Y2VwdGlvblJlc3VsdCBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5kZWZp
bmVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2RlKHNj
cmlwdCksIHRoaXNWYWx1ZSwgaW50ZXJuYWxFeGNlcHRpb24pOwogICAgIGlmIChpbnRlcm5hbEV4
Y2VwdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxODU0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTA4LDYg
KzE1MDgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXhjZXB0aW9uRnV6ei5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRpb25IZWxwZXJz
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4Y2VwdGlvblJlc3Vs
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGVjdXRhYmxlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0MzJBcnJheS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGbG9hdDY0QXJyYXkuaCIgLz4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5
KQpAQCAtNDE5Niw2ICs0MTk2LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcRXhjZXB0aW9uRnV6ei5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRp
b25SZXN1bHQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFRvVGhpc1N0YXR1cy5o
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTY2OSw2ICsxNjY5LDcgQEAKIAkJRkUzODRFRTYxQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODRF
RTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTMxQUREQjdBRDAwNTVE
RTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwogCQlGRTM4NEVFODFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTQxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9s
bGFyVk1Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRTQ1M0M5QzFCMjkxMkIwMDBGODdBQkUgLyogRXhjZXB0aW9uUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1M0M5QjFC
MjkxMjZEMDBGODdBQkUgLyogRXhjZXB0aW9uUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU0QkZGMkIxQUQ0NzZFNzAwMDg4Rjg3IC8q
IEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFNEJGRjI5MUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRl
cy5jcHAgKi87IH07CiAJCUZFNEJGRjJDMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJy
aWRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0
QkZGMkExQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggKi87IH07CiAJCUZF
NEQ1NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEQ1NUI3MUFFNzE2Q0EwMDUyRTQ1
OSAvKiBJdGVyYXRpb25TdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzQ3NSw2ICszNDc2LDcgQEAKIAkJRkUzODRFRTIxQUREQjdBRDAw
NTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNEb2xsYXJWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMzFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvbGxhclZNUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTQxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Q
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2xsYXJWTVBy
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1M0M5QjFCMjkxMjZE
MDBGODdBQkUgLyogRXhjZXB0aW9uUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4Y2VwdGlvblJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTRCRkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25PdmVycmlkZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRCRkYyQTFBRDQ3NkU3MDAwODhGODcgLyogRnVu
Y3Rpb25PdmVycmlkZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rp
b25PdmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0RDU1QjcxQUU3
MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJdGVyYXRpb25TdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0MzgsNiArNDQ0MCw3IEBACiAJCQkJMEYxMkRFMEUxOTc5RDVGRDAwMDZGRjRFIC8qIEV4
Y2VwdGlvbkZ1enouaCAqLywKIAkJCQkxNDI5RDg3NzBFRDIxQUNEMDBCODk2MTkgLyogRXhjZXB0
aW9uSGVscGVycy5jcHAgKi8sCiAJCQkJQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2Vw
dGlvbkhlbHBlcnMuaCAqLywKKwkJCQlGRTQ1M0M5QjFCMjkxMjZEMDBGODdBQkUgLyogRXhjZXB0
aW9uUmVzdWx0LmggKi8sCiAJCQkJODZDQTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFi
bGUuY3BwICovLAogCQkJCTg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmgg
Ki8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLApA
QCAtNTcwMSw2ICs1NzA0LDcgQEAKIAkJCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNz
ZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1
RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU0NTNDOUMxQjI5MTJCMDAwRjg3QUJFIC8qIEV4Y2VwdGlvblJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJ
bnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyog
Qm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkocmV2aXNpb24g
MTg1NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAorI2luY2x1ZGUgIkV4Y2Vw
dGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtMTMzLDcgKzEzNCw3IEBAIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2EKICAgICAgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBFeGNlcHRpb24q
IGV4Y2VwdGlvbjsKKyAgICBFeGNlcHRpb25SZXN1bHQgZXhjZXB0aW9uOwogICAgIGlmIChtX2Nh
bGxIYW5kbGVyKQogICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZXhlYywgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlv
bik7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkocmV2aXNpb24gMTg1NDQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNj
cmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKIHB1
YmxpYzoKLSAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRs
ZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpT
Qzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6
OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6RXhjZXB0
aW9uKiYgZXhjZXB0aW9uKTsKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0
aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNh
bGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3Ms
IEpTQzo6RXhjZXB0aW9uUmVzdWx0Jik7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNj
cmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlv
bkNhbGxIYW5kbGVyIGhhbmRsZXIgPSBudWxscHRyKTsKICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJv
b2wmIGhhZEV4Y2VwdGlvbik7CiAgICAgU2NyaXB0VmFsdWUgY2FsbCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAxODU0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFcnJvci5oIgotCisjaW5jbHVkZSAi
RXhjZXB0aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAt
NDg3LDcgKzQ4Nyw3IEBAIGJvb2wgRGVidWdnZXI6Omhhc0JyZWFrcG9pbnQoU291cmNlSUQgc28K
ICAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxpa2UgdGhlIGRlYnVnZ2VyIGlzIGFscmVhZHkgcGF1
c2VkLgogICAgIFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBhdXNlZFN0YXRlKCp0aGlzKTsKIAotICAg
IEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAg
ICAgRGVidWdnZXJDYWxsRnJhbWUqIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2Vy
Q2FsbEZyYW1lKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS0+ZXZh
bHVhdGUoYnJlYWtwb2ludC0+Y29uZGl0aW9uLCBleGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkocmV2aXNpb24gMTg1NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7Citj
bGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIFNvdXJjZVByb3ZpZGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxODU0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiRGVidWdnZXJFdmFsRW5hYmxlci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUu
aCIKLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25SZXN1bHQuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMTc3LDEwICsxNzcsOSBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoKSBjCiB9CiAKIC8vIEV2YWx1YXRlIHNvbWUg
SmF2YVNjcmlwdCBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGlzIGZyYW1lLgotSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEV4Y2VwdGlvbiom
IGV4Y2VwdGlvbikKK0pTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBFeGNlcHRpb25SZXN1bHQmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKLSAgICBleGNlcHRpb24gPSBudWxscHRyOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gbV9jYWxsRnJhbWU7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERlYnVnZ2VyU2NvcGU7Ci1j
bGFzcyBFeGNlcHRpb247CitjbGFzcyBFeGNlcHRpb25SZXN1bHQ7CiBjbGFzcyBFeGVjU3RhdGU7
CiB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0OwotICAgIEpTVmFsdWUgZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uKiYpOworICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uUmVzdWx0Jik7CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FsbEZyYW1lOyB9CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnZhbGlk
YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCIKIAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25S
ZXN1bHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtMTM5
LDcgKzE0MCw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE0KICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5n
bG9iYWxUaGlzVmFsdWUoKTsKIAotICAgIEV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
KyAgICBFeGNlcHRpb25SZXN1bHQgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBJbnNwZWN0b3JF
dmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9ubWVudC5ldmFsdWF0ZUhh
bmRsZXIoKTsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0ZUhhbmRsZXIoc2Ny
aXB0U3RhdGUsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oCShyZXZp
c2lvbiAxODU0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxNCBAQCBjbGFzcyBT
dG9wd2F0Y2g7CiB9CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhjZXB0aW9uOworY2xhc3Mg
RXhjZXB0aW9uUmVzdWx0OwogY2xhc3MgU291cmNlQ29kZTsKIH0KIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLXR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFu
ZGxlcikoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
SlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNl
cHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7Ci10eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3Bl
Y3RvckV2YWx1YXRlSGFuZGxlcikoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNvdXJjZUNv
ZGUmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhj
ZXB0aW9uKTsKK3R5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFu
ZGxlcikoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
SlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNl
cHRpb25SZXN1bHQmKTsKK3R5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRXZhbHVhdGVI
YW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNW
YWx1ZSB0aGlzVmFsdWUsIEpTQzo6RXhjZXB0aW9uUmVzdWx0Jik7CiAKIGNsYXNzIEluc3BlY3Rv
ckVudmlyb25tZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaCIKQEAgLTc2LDcgKzc2LDcgQEAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp+SlNKYXZhU2NyaXB0Q2FsbAogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOwor
ICAgIEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBs
KCkuZXZhbHVhdGUoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
LCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCShyZXZpc2lvbiAx
ODU0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgSlND
OjpKU0dsb2JhbE9iamVjdCogdm1FbnRyeUdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVidWdnZXJDYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsgfQogCiAgICAgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOyB9Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBKU0M6OkV4Y2VwdGlvbiomIGV4Y2VwdGlvbikgY29uc3QgIHsgcmV0dXJuIG1fZGVidWdn
ZXJDYWxsRnJhbWUtPmV2YWx1YXRlKHNjcmlwdCwgZXhjZXB0aW9uKTsgfQorICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNDOjpFeGNlcHRpb25SZXN1bHQm
IGV4Y2VwdGlvbikgY29uc3QgIHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRl
KHNjcmlwdCwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJh
bWUoUGFzc1JlZlB0cjxKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lPik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAko
cmV2aXNpb24gMTg1NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25SZXN1bHQuaCIKICNpbmNs
dWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNs
dWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCkBAIC05NCw3ICs5NSw3IEBAIGJvb2wgU2NyaXB0
RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2kKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTogewotICAgICAgICBFeGNl
cHRpb24qIGV4Y2VwdGlvbjsKKyAgICAgICAgRXhjZXB0aW9uUmVzdWx0IGV4Y2VwdGlvbjsKICAg
ICAgICAgZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKGJyZWFrcG9pbnRBY3Rpb24uZGF0YSwg
ZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZS0+ZXhlYygpLCBleGNlcHRpb24pOwpAQCAtMTA0LDcg
KzEwNSw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2kKICAgICAg
ICAgZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQoZGVidWdnZXJDYWxsRnJhbWUtPmV4ZWMo
KSwgYnJlYWtwb2ludEFjdGlvbi5pZGVudGlmaWVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2JlOiB7Ci0gICAgICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uOworICAgICAgICBFeGNlcHRpb25SZXN1bHQgZXhjZXB0aW9uOwogICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShicmVha3BvaW50QWN0
aW9uLmRhdGEsIGV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUtPmV4ZWMoKSwgZXhjZXB0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHJldmlz
aW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAKLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC00MCwxNSArNDAsMTQg
QEAgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdQogICAgIHJldHVybiBl
eGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlQ2FsbChleGVjLCBhc09iamVjdChmdW5jdGlvbk9i
amVjdCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKIH0KIAotSlNWYWx1
ZSBjYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUg
Y2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIEV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1
ZSBjYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUg
Y2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIEV4Y2VwdGlvblJlc3VsdCYgcmV0dXJuZWRFeGNlcHRpb24pCiB7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IG51bGxwdHI7Cisg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkocmV2aXNpb24g
MTg1NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFy
Z0xpc3Q7Ci1jbGFzcyBFeGNlcHRpb247CitjbGFzcyBFeGNlcHRpb25SZXN1bHQ7CiBjbGFzcyBF
eGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU09iamVjdDsKQEAg
LTU5LDcgKzU5LDcgQEAgdW5pb24gQ2FsbERhdGEgewogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBl
LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci1K
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmLCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7CitKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmLCBFeGNlcHRpb25SZXN1bHQmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAx
ODU0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsMTIgKzYxLDExIEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2QKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Qs
IEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKIH0KIAotSlNWYWx1ZSBldmFsdWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIEV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEV4Y2VwdGlvblJlc3VsdCYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJp
bmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7Ci0gICAgcmV0dXJu
ZWRFeGNlcHRpb24gPSBudWxscHRyOwogCiAgICAgQ29kZVByb2ZpbGluZyBwcm9maWxlKHNvdXJj
ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJ
KHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWZuZGVmIENvbXBs
ZXRpb25faAogI2RlZmluZSBDb21wbGV0aW9uX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvblJlc3Vs
dC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEV4Y2VwdGlvbjsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBQYXJz
ZXJFcnJvcjsKQEAgLTM2LDEwICszNiwxMCBAQCBjbGFzcyBWTTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjaGVja1N5bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYp
OwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7Ci1KU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgRXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24pOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEV4Y2VwdGlvblJlc3VsdCYpOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTVmFsdWUoKSkKIHsKLSAgICBFeGNlcHRpb24qIHVudXNlZDsKKyAgICBFeGNl
cHRpb25SZXN1bHQgdW51c2VkOwogICAgIHJldHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2VDb2Rl
LCB0aGlzVmFsdWUsIHVudXNlZCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvblJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvblJlc3VsdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRXhjZXB0aW9uUmVzdWx0X2gKKyNkZWZpbmUgRXhjZXB0aW9uUmVzdWx0X2gK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4Y2VwdGlvbjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBQdHIgeworcHVibGljOgorICAgIFB0cigpCisgICAgICAgIDogbV9wdHIo
bnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgUHRyKFQqIHB0cikKKyAgICAgICAgOiBtX3B0
cihwdHIpCisgICAgeworICAgIH0KKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIEFMV0FZU19JTkxJTkUgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICBvcGVyYXRvciBUKigpIHsgcmV0dXJu
IG1fcHRyOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsg
fQorICAgIAorICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQg
Y29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0
eXBlZGVmIFQqIChQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNw
ZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUHRyOjptX3B0ciA6IG51
bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKK307CisKK2NsYXNzIEV4Y2VwdGlv
blJlc3VsdCA6IHB1YmxpYyBQdHI8RXhjZXB0aW9uPiB7CitwdWJsaWM6CisgICAgRXhjZXB0aW9u
UmVzdWx0KCkKKyAgICAgICAgOiBQdHIoKQorICAgIHsKKyAgICB9CisKKyAgICBFeGNlcHRpb25S
ZXN1bHQoRXhjZXB0aW9uKiBleGNlcHRpb24pCisgICAgICAgIDogUHRyKGV4Y2VwdGlvbikKKyAg
ICB7CisgICAgfQorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRXhj
ZXB0aW9uUmVzdWx0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTQ0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE1
LTA2LTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1
Y2luZyBFeGNlcHRpb25SZXN1bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDU4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMg
YWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9FeGNlcHRpb25SZXN1bHQuaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFj
a0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9y
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Ondv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0
aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0
cyk6CisKIDIwMTUtMDYtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODU0NDIuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0V4Y2VwdGlvblJlc3VsdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRXhj
ZXB0aW9uUmVzdWx0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0V4Y2VwdGlvblJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9FeGNlcHRpb25SZXN1bHRfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9FeGNlcHRpb25SZXN1bHRfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4
Y2VwdGlvblJlc3VsdC5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSgogCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERh
dGEpOwogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgRXhjZXB0aW9uUmVzdWx0IGV4
Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNvbnRleHQtPmlzRG9jdW1lbnQoKQogICAg
ICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbikKICAgICAgICAgOiBKU0M6
OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
LCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMTg1NDQ1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmEKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwogCi0gICAgRXhjZXB0aW9uKiBl
eGNlcHRpb247CisgICAgRXhjZXB0aW9uUmVzdWx0IGV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJl
dHZhbCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBtX2N1c3RvbVJlc29sdmVyLmdldCgpLCBhcmdzLCBleGNlcHRpb24pOwog
CiAgICAgU3RyaW5nIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXJyb3JIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Vycm9ySGFuZGxlci5jcHAJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5
U2NvcGUodm0sIHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6
IGdsb2JhbE9iamVjdCk7CiAKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgICAg
IEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKICAgICAgICAgICAgID8gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pCiAgICAgICAgICAgICA6IEpTQzo6
Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwg
YXJncywgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTg1NDQ1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
YWxsVHlwZSwgY2FsbERhdGEpOwogCiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxl
RXZlbnRGdW5jdGlvbiA9PSBqc0Z1bmN0aW9uID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2
ZW50LT5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsKLSAgICAgICAgRXhjZXB0aW9uKiBl
eGNlcHRpb247CisgICAgICAgIEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAgICAgICAgIEpT
VmFsdWUgcmV0dmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAg
ICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKQog
ICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAJ
KHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0NiwxNCBAQCB2b2lk
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpCiAgICAgTXV0YXRpb25PYnNlcnZl
cjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOwogfQogCi1KU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncywgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTQzo6SlNWYWx1ZSBm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBK
U0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvblJlc3VsdCYgcmV0dXJuZWRFeGNlcHRpb24p
CiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm4gSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIHJldHVybiBKU0M6OmNh
bGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiB9CiAKLUpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRs
ZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1
cm5lZEV4Y2VwdGlvbikKK0pTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFk
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb25SZXN1bHQmIHJldHVybmVkRXhjZXB0
aW9uKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIHJldHVybmVk
RXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25SZXN1bHQuaD4K
ICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFzay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKQEAgLTUwLDEzICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzX21haW5U
aHJlYWRTdGF0ZTsKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvbiom
IHJldHVybmVkRXhjZXB0aW9uKQorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvblJlc3VsdCYg
cmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGV4ZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIH07CiAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKKyAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpF
eGNlcHRpb25SZXN1bHQmIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6
ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAg
LTY0LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUgPSBKU0M6OkpTVmFsdWUoKSkKICAgICB7Ci0gICAgICAgIEpT
Qzo6RXhjZXB0aW9uKiB1bnVzZWQ7CisgICAgICAgIEpTQzo6RXhjZXB0aW9uUmVzdWx0IHVudXNl
ZDsKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGV4ZWMsIHNvdXJjZSwgdGhpc1ZhbHVlLCB1bnVz
ZWQpOwogICAgIH07CiAKQEAgLTEyNyw4ICsxMjgsOCBAQCBwcml2YXRlOgogICAgIEpTQzo6RXhl
Y1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCi1KU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6RXhjZXB0aW9uKiYg
cmV0dXJuZWRFeGNlcHRpb24pOwotSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlU
aHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKTsKK0pTQzo6
SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpD
YWxsRGF0YSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJn
cywgSlNDOjpFeGNlcHRpb25SZXN1bHQmKTsKK0pTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJG
cm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb25SZXN1bHQmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTXV0YXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdAog
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2Fs
bERhdGEpOwogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgRXhjZXB0aW9uUmVzdWx0
IGV4Y2VwdGlvbjsKICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgY2FsbGJh
Y2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNPYnNlcnZlciwgYXJncywgZXhjZXB0aW9uKTsKIAog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29u
dGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNl
cHRpb25SZXN1bHQuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1
dGVGdW5jdGlvbkluQwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmY29udGV4
dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAg
IEV4Y2VwdGlvblJlc3VsdCBleGNlcHRpb247CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0
KSkKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24u
Z2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwog
ICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODU0NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3
IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXIKIAogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3Rh
cnRMaW5lKCkpOwogCi0gICAgRXhjZXB0aW9uKiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgIEV4
Y2VwdGlvblJlc3VsdCBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dXJuVmFs
dWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKGV4ZWMsIGpzU291cmNlQ29kZSwg
c2hlbGwsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUsIG1fZnJhbWUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247
CisgICAgRXhjZXB0aW9uUmVzdWx0IGV4Y2VwdGlvbjsKICAgICBldmFsdWF0ZShzb3VyY2VDb2Rl
LCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0oKSk7CkBAIC0xMDcsOSArMTA3LDggQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZShjbwogICAgIH0KIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU0M6OkV4Y2Vw
dGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU0M6OkV4Y2VwdGlv
blJlc3VsdCYgcmV0dXJuZWRFeGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuZWRFeGNlcHRpb24gPSBu
dWxscHRyOwogICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTExOCwyOCArMTE3LDI2IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUoY28KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2xvYmFsRXhlYygpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgSlND
OjpFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNDOjpldmFsdWF0ZShleGVj
LCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
Z2xvYmFsVGhpcygpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU0M6OmV2YWx1YXRlKGV4
ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgaWYgKChldmFsdWF0aW9uRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihldmFsdWF0aW9uRXhjZXB0aW9uKSkgCisgICAgaWYgKChyZXR1cm5lZEV4
Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRp
b24pKQogICAgICAgICB8fCAodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoKSkp
IHsKICAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgeworICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlv
bikgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgICAgICBpbnQgbGluZU51bWJl
ciA9IDA7CiAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291
cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2Vy
R2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpIHsK
ICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGVy
cm9yTWVzc2FnZS5pbXBsKCkpKTsKLSAgICAgICAgICAgIGV2YWx1YXRpb25FeGNlcHRpb24gPSB2
bS5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gdm0uZXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAg
fQotICAgIHJldHVybmVkRXhjZXB0aW9uID0gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKIH0KIAogdm9p
ZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4
Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICAgICAgdm9pZCBldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4
Y2VwdGlvbik7CisgICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IEpTQzo6RXhjZXB0aW9uUmVzdWx0Jik7CiAKICAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oSlND
OjpFeGNlcHRpb24qKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDE4NTQ0NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
NyArMzQyLDcgQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYQogICAg
IGlmICghW3NlbGYgX2lzU2FmZVNjcmlwdF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBK
U0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIEpTQzo6RXhjZXB0aW9uUmVzdWx0IGV4Y2Vw
dGlvbjsKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
YWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIFtzZWxmIF9pbXBdLCBhcmdM
aXN0LCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDE4NTQ0NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25SZXN1
bHQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpAQCAtMTk3LDcgKzE5OCw3IEBAIHZv
aWQgV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY28KIAogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwog
Ci0gICAgICAgIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgICAgIEpTQzo6RXhjZXB0
aW9uUmVzdWx0IGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVS
TCgpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAg
bV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwo=
</data>
<flag name="review"
          id="279696"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254851</attachid>
            <date>2015-06-12 23:08:13 -0700</date>
            <delta_ts>2015-06-16 13:12:04 -0700</delta_ts>
            <desc>patch 2: using NakedPtr&lt;Exception&gt;.</desc>
            <filename>bug-145870b.patch</filename>
            <type>text/plain</type>
            <size>57945</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDE1LTA2LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJuIGV4Y2VwdGlvbiByZXN1bHRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHIxODUy
NTksIGNhbGxzIGludG8gdGhlIFZNIHRha2VzIGEgSlNWYWx1ZSogZXhjZXB0aW9uIHJlc3VsdCBh
cmd1bWVudCBmb3IKKyAgICAgICAgcmV0dXJuaW5nIGFueSB1bmNhdWdodCBleGNlcHRpb24gdGhh
dCBtYXkgaGF2ZSBiZWVuIHRocm93biB3aGlsZSBleGVjdXRpbmcgSlMgY29kZS4KKyAgICAgICAg
QXMgYSByZXN1bHQsIGNsaWVudHMgb2YgdGhlIFZNIGZ1bmN0aW9ucyB3aWxsIGRlY2xhcmUgYSBs
b2NhbCBKU1ZhbHVlIGV4Y2VwdGlvbgorICAgICAgICByZXN1bHQgd2hpY2ggaXMgYXV0b21hdGlj
YWxseSBpbml0aWFsaXplZCB0byBhIG51bGwgdmFsdWUgKGkuZS4gdGhlIGVtcHR5IHZhbHVlLAor
ICAgICAgICBub3QgdGhlIEpTIG51bGwgdmFsdWUpLgorCisgICAgICAgIFdpdGggcjE4NTI1OSwg
dGhlIFZNIGZ1bmN0aW9ucyB3ZXJlIGNoYW5nZWQgdG8gdGFrZSBhbiBFeGNlcHRpb24qJiBleGNl
cHRpb24gcmVzdWx0CisgICAgICAgIGluc3RlYWQsIGFuZCB0aGUgVk0gZnVuY3Rpb25zIGFyZSBy
ZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBleGNlcHRpb24gcmVzdWx0CisgICAgICAg
IHRvIG51bGwgaWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KKworICAgICAgICBUaGlzIGludHJv
ZHVjZXMgMiBpc3N1ZXM6CisKKyAgICAgICAgMS4gdGhlIFZNIGZ1bmN0aW9ucyBhcmUgdnVsbmVy
YWJsZSB0byBtb2RpZmljYXRpb25zIHRoYXQgbWF5IGFkZCBlYXJseSByZXR1cm5zCisgICAgICAg
ICAgIGJlZm9yZSB0aGUgZXhjZXB0aW9uIHJlc3VsdCBpcyBudWxsaWZpZWQuICBUaGlzIGNhbiBy
ZXN1bHQgaW4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICByZXN1bHQgYmVpbmcgdXNlZCB3aXRo
b3V0IGluaXRpYWxpemF0aW9uLgorCisgICAgICAgIDIuIFByZXZpb3VzbHksIGEgY2xpZW50IGNv
dWxkIHRlY2huaWNhbGx5IHVzZSB0aGUgc2FtZSBleGNlcHRpb24gcmVzdWx0IGZvciBtb3JlCisg
ICAgICAgICAgIHRoYW4gb25lIGNhbGxzIGludG8gdGhlIFZNIGZ1bmN0aW9ucy4gIElmIGFuIGVh
cmxpZXIgY2FsbCBzZXRzIGl0IHRvIGEgdGhyb3duCisgICAgICAgICAgIHZhbHVlLCB0aGUgdGhy
b3duIHZhbHVlIHdpbGwgc3RpY2sgdW5sZXNzIGEgc3Vic2VxdWVudCBjYWxsIHRocm93cyBhIGRp
ZmZlcmVudAorICAgICAgICAgICBleGNlcHRpb24uCisKKyAgICAgICAgICAgV2l0aCB0aGUgbmV3
IEV4Y2VwdGlvbiomIGV4Y2VwdGlvbiByZXN1bHQsIHRoZSBWTSBmdW5jdGlvbnMgd2lsbCBhbHdh
eXMgY2xlYXIKKyAgICAgICAgICAgdGhlIGV4Y2VwdGlvbiByZXN1bHQgYmVmb3JlIHByb2NlZWRp
bmcuICBBcyBhIHJlc3VsdCwgdGhlIGNsaWVudCdzIGV4Y2VwdGlvbgorICAgICAgICAgICByZXN1
bHQgd2lsbCBiZSBudWxsIGFmdGVyIHRoZSBzZWNvbmQgY2FsbCBldmVuIHRob3VnaCB0aGUgZmly
c3QgY2FsbCBzYXcgYW4KKyAgICAgICAgICAgZXhjZXB0aW9uIHRocm93bi4gIFRoaXMgaXMgYSBj
aGFuZ2UgaW4gdGhlIGV4cGVjdGVkIGJlaGF2aW9yLgorCisgICAgICAgIFRvIGZpeCB0aGVzZSBp
c3N1ZXMsIHdlJ2xsIGludHJvZHVjZSBhIE5ha2VkUHRyIHNtYXJ0IHBvaW50ZXIgd2hvc2Ugc29s
ZSBwdXJwb3NlCisgICAgICAgIGlzIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBwb2ludGVyIGlzIGlu
aXRpYWxpemVkLiAgVGhlIFZNIGZ1bmN0aW9ucyB3aWxsIG5vdyB0YWtlCisgICAgICAgIGEgTmFr
ZWRQdHI8RXhjZXB0aW9uPiYgaW5zdGVhZCBvZiB0aGUgRXhjZXB0aW9uKiYuICBUaGlzIGVuc3Vy
ZXMgdGhhdCB0aGUKKyAgICAgICAgZXhjZXB0aW9uIHJlc3VsdCBpcyBpbml0aWFsaXplZC4KKwor
ICAgICAgICBUaGUgVk0gZnVuY3Rpb25zIGJlIGFsc28gcmV2ZXJ0ZWQgdG8gb25seSBzZXQgdGhl
IGV4Y2VwdGlvbiByZXN1bHQgaWYgYSBuZXcKKyAgICAgICAgZXhjZXB0aW9uIGlzIHRocm93bi4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6
CisgICAgICAgICogQVBJL0pTU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpo
YXNCcmVha3BvaW50KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpl
dmFsdWF0ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmlzVmFsaWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dm1FbnRyeUdsb2Jh
bE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNW
YWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKToK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAgICAgICAoZnVu
Y3Rpb25Mb2FkKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
Y2FsbCk6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpT
Qzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAo
SlNDOjpldmFsdWF0ZSk6CisKIDIwMTUtMDYtMTIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgaW4gSmF2YVNjcmlwdENv
cmUgLSAyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTg1NTMyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwOCw3ICs5MDgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgZ2xvYmFs
T2JqZWN0LT5wdXREaXJlY3QoCiAgICAgICAgIGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwog
Ci0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsK
ICAgICBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlw
dC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwpAQCAtOTMxLDcgKzkz
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2EKIAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CiAgICAgCi0gICAgRXhjZXB0aW9uKiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2
YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEo
KSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChl
dmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV2YWx1YXRpb25FeGNlcHRpb24pOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgc3RhdGljIGJv
b2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogCiAgICAgICAgIHZtLnN0YXJ0U2FtcGxp
bmcoKTsKIAotICAgICAgICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAgICAgSlNWYWx1
ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NT
b3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7
CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOwogICAg
ICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbikKQEAgLTEzNTgsNyArMTM1OCw3
IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCoKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgCi0gICAgICAgIEV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlv
bjsKKyAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIG1ha2VTb3VyY2Uoc291cmNlLCBpbnRlcnByZXRlck5hbWUpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgcHJpbnRmKCIlcyIsIGludGVyYWN0
aXZlUHJvbXB0KTsKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0
aXZlKEdsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBsaW5lLmFwcGVu
ZCgnXDAnKTsKIAotICAgICAgICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAg
ICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICAgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBq
c2NTb3VyY2UobGluZS5kYXRhKCksIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAxODU1MzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpTQ29udGV4dFJl
ZgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCk7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+c3Ry
aW5nKCksIHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBv
c2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIp
LCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKLSAgICBFeGNlcHRpb24qIGV2YWx1YXRpb25F
eGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwog
ICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgc291cmNlLCBqc1RoaXNPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTY3JpcHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTY3JpcHRSZWYuY3BwCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTVmFsdWVSZWYgSlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAg
IEV4Y2VwdGlvbiogaW50ZXJuYWxFeGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBp
bnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/
IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5kZWZpbmVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2RlKHNjcmlwdCksIHRoaXNWYWx1ZSwgaW50
ZXJuYWxFeGNlcHRpb24pOwogICAgIGlmIChpbnRlcm5hbEV4Y2VwdGlvbikgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAJKHJldmlzaW9uIDE4NTUzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcg
QEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYQogICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
IEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwogICAgIGlmIChtX2NhbGxIYW5kbGVyKQogICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVy
KG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1
bWVudHMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkocmV2aXNpb24gMTg1NTMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1l
bnRIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1
bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVu
Y3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
IGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFy
Z3MsIEpTQzo6RXhjZXB0aW9uKiYgZXhjZXB0aW9uKTsKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1
ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpT
Qzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6
OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYpOwogICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7CiAgICAg
U2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOwogICAgIFNjcmlwdFZhbHVlIGNh
bGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXJy
b3IuaCIKLQogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTQ4Nyw3ICs0ODYs
NyBAQCBib29sIERlYnVnZ2VyOjpoYXNCcmVha3BvaW50KFNvdXJjZUlEIHNvCiAgICAgLy8gc28g
bWFrZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5IHBhdXNlZC4KICAgICBU
ZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CiAKLSAgICBFeGNlcHRpb24q
IGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBEZWJ1
Z2dlckNhbGxGcmFtZSogZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJh
bWUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShi
cmVha3BvaW50LT5jb25kaXRpb24sIGV4Y2VwdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIEV4
Y2VwdGlvbjsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3Mg
U291cmNlUHJvdmlkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE4NTUzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlckV2YWxFbmFibGVyLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgotI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0xNzcs
MTAgKzE3Niw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZSgpIGMKIH0K
IAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMg
ZnJhbWUuCi1KU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcm
IHNjcmlwdCwgRXhjZXB0aW9uKiYgZXhjZXB0aW9uKQorSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFt
ZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIGV4
Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBleGNlcHRpb24gPSBudWxs
cHRyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gbV9jYWxsRnJhbWU7CiAgICAgaWYgKCFj
YWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiAx
ODU1MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRGVidWdn
ZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSA8d3RmL05ha2Vk
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtNjcsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZ1bmN0aW9uTmFtZSgp
IGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBl
dmFsdWF0ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb24qJik7CisgICAgSlNWYWx1ZSBldmFsdWF0
ZShjb25zdCBTdHJpbmcmLCBOYWtlZFB0cjxFeGNlcHRpb24+Jik7CiAKICAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbEZyYW1lOyB9CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbnZhbGlkYXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAx
ODU1MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSlNWYWx1
ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKLSAg
ICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFs
dWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwogICAgIEpTVmFs
dWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFuZGxlcihzY3JpcHRTdGF0ZSwgc291cmNlQ29k
ZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgJKHJldmlzaW9uIDE4NTUzMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBjbGFzcyBTb3VyY2VDb2RlOwogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlv
bkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxs
RGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBK
U0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKTsKLXR5cGVkZWYgSlNDOjpKU1ZhbHVl
ICgqSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0
dXJuZWRFeGNlcHRpb24pOwordHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlv
bkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxs
RGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKK3R5cGVkZWYgSlND
OjpKU1ZhbHVlICgqSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiBjbGFzcyBJbnNwZWN0b3JFbnZp
cm9ubWVudCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxODU1
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkRl
YnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgiCkBAIC03Niw3ICs3NSw3
IEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAogSlNWYWx1ZSBK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBF
eGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwoKS5ldmFsdWF0ZShleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDE4NTUzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7IH0KLSAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6RXhjZXB0aW9uKiYgZXhjZXB0aW9u
KSBjb25zdCAgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBl
eGNlcHRpb24pOyB9CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikgY29uc3QgIHsgcmV0dXJu
IG1fZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKHNjcmlwdCwgZXhjZXB0aW9uKTsgfQogCiBw
cml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUoUGFzc1JlZlB0cjxKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVC
cmVha3BvaQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTY3JpcHRCcmVha3BvaW50
QWN0aW9uVHlwZUV2YWx1YXRlOiB7Ci0gICAgICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAg
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAgZGVidWdnZXJDYWxs
RnJhbWUtPmV2YWx1YXRlKGJyZWFrcG9pbnRBY3Rpb24uZGF0YSwgZXhjZXB0aW9uKTsKICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihkZWJ1Z2dlckNh
bGxGcmFtZS0+ZXhlYygpLCBleGNlcHRpb24pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2kKICAgICAgICAgZGlzcGF0Y2hCcmVha3Bv
aW50QWN0aW9uU291bmQoZGVidWdnZXJDYWxsRnJhbWUtPmV4ZWMoKSwgYnJlYWtwb2ludEFjdGlv
bi5pZGVudGlmaWVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3JpcHRCcmVha3BvaW50
QWN0aW9uVHlwZVByb2JlOiB7Ci0gICAgICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgICAg
ICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBkZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUoYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBleGNl
cHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgcmVwb3J0RXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLT5leGVjKCksIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwCShyZXZpc2lvbiAxODU1MzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWxs
RGF0YS5oIgogCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAt
NDAsMTUgKzM5LDE0IEBAIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnUK
ICAgICByZXR1cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZUNhbGwoZXhlYywgYXNPYmpl
Y3QoZnVuY3Rpb25PYmplY3QpLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7
CiB9CiAKLUpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2Vw
dGlvbikKK0pTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbikKIHsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rp
b25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVj
LT5leGNlcHRpb24oKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybmVkRXhjZXB0
aW9uID0gbnVsbHB0cjsKKyAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fs
bERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIENh
bGxEYXRhX2gKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmFrZWRQ
dHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU5LDcgKzYwLDcgQEAgdW5pb24gQ2FsbERh
dGEgewogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNh
bGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBFeGNlcHRpb24qJiBy
ZXR1cm5lZEV4Y2VwdGlvbik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMTg1NTMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDEyICs2MSwxMSBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29u
c3QgU291cmNlQ29kCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiB9CiAKLUpTVmFsdWUgZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBO
YWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKLSAgICByZXR1cm5l
ZEV4Y2VwdGlvbiA9IG51bGxwdHI7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNl
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAko
cmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIENvbXBsZXRp
b25faAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzYsMTAgKzM3LDEwIEBAIGNsYXNzIFZNOwogCiBK
U19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLUpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7CitK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSkK
IHsKLSAgICBFeGNlcHRpb24qIHVudXNlZDsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHVudXNl
ZDsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVz
ZWQpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wNi0xMiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ha2VkUHRyPEV4Y2VwdGlvbj4m
IHRvIHJldHVybiBleGNlcHRpb24gcmVzdWx0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBOYWtlZFB0ciBjbGFzcy4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9O
YWtlZFB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6TmFrZWRQdHI6Ok5ha2VkUHRyKToKKyAg
ICAgICAgKFdURjo6TmFrZWRQdHI6OmdldCk6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpjbGVh
cik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVyYXRvciopOgorICAgICAgICAoV1RGOjpO
YWtlZFB0cjo6b3BlcmF0b3ItPik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVyYXRvciBU
Kik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVyYXRvciEpOgorICAgICAgICAoV1RGOjpO
YWtlZFB0cjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjpOYWtlZFB0cjxUPjo6c3dhcCk6CisgICAgICAgIChXVEY6OnN3YXAp
OgorCiAyMDE1LTA2LTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR0xpYl0gTW92ZSBmaWxlcyB1bmRlciBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0IHRv
IFNvdXJjZS9XVEYvd3RmL2dsaWIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3IEBACiAJCUU0
QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuaCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJ
CUVCOTVFMUYwMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCAqLzsgfTsKKwkJRkU4MjI1MzExQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2Vk
UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgy
MjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLzsgfTsKIAkJRkU5MUU4ODExQUIy
QTAyMDAwOTk4OTVGIC8qIFNwaW5Mb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTkxRTg4MDFBQjJBMDIwMDA5OTg5NUYgLyogU3BpbkxvY2suaCAq
LzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgz
RjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsg
fTsKQEAgLTU2OCw2ICs1NjksNyBAQAogCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyog
V29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjk1RTFF
RjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgy
MjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU5
MUU4ODAxQUIyQTAyMDAwOTk4OTVGIC8qIFNwaW5Mb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwaW5Mb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
REFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03ODIsNiArNzg0LDcgQEAKIAkJCQlBOEE0NzJDRDE1MUE4MjVCMDA0
MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFBODI1QjAwNDEy
M0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKIAkJCQlBOEE0NzJDRjE1MUE4MjVCMDA0MTIzRkYg
LyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICovLAorCQkJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhG
RCAvKiBOYWtlZFB0ci5oICovLAogCQkJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZl
ckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2su
aCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVCMDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywK
QEAgLTExNzgsNiArMTE4MSw3IEBACiAJCQkJRkU5MUU4ODExQUIyQTAyMDAwOTk4OTVGIC8qIFNw
aW5Mb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQzE1MUE4MjVCMDA0MTIzRkYgLyog
U3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQzRjE1MUE4MjVCMDA0MTIz
RkYgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MjI1MzExQjJBMUU1QjAw
QkE2OEZEIC8qIE5ha2VkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4NzQ1NDE3QTBCREFF
MDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSGFzaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzQ0MTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9OYWtlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL05ha2VkUHRyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9OYWtl
ZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfTmFrZWRQdHJfaAorI2Rl
ZmluZSBXVEZfTmFrZWRQdHJfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBOYWtlZFB0ciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSBO
YWtlZFB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CisgICAgQUxXQVlTX0lOTElORSBOYWtlZFB0
cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE5ha2VkUHRyKGNv
bnN0IE5ha2VkUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IE5ha2VkUHRyKGNvbnN0IE5ha2VkUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsg
fQorCisgICAgQUxXQVlTX0lOTElORSBOYWtlZFB0cihOYWtlZFB0ciYmIG8pIDogbV9wdHIoby5n
ZXQoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTmFrZWRQdHIoTmFrZWRQdHI8VT4m
JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgfQorCisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9wdHI7IH0KKworICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0gbnVsbHB0cjsgfQorCisgICAg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0K
KworICAgIG9wZXJhdG9yIFQqKCkgeyByZXR1cm4gbV9wdHI7IH0KKworICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisgICAgCisgICAgLy8gVGhpcyBjb252ZXJz
aW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0
byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKE5ha2VkUHRyOjoqVW5zcGVj
aWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyID8gJk5ha2VkUHRyOjptX3B0ciA6IG51bGxwdHI7IH0KKworICAgIE5h
a2VkUHRyJiBvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHImKTsKKyAgICBOYWtlZFB0ciYgb3BlcmF0
b3I9KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBOYWtlZFB0ciYgb3BlcmF0b3I9KGNv
bnN0IE5ha2VkUHRyPFU+Jik7CisgICAgTmFrZWRQdHImIG9wZXJhdG9yPShOYWtlZFB0ciYmKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBOYWtlZFB0ciYgb3BlcmF0b3I9KE5ha2VkUHRyPFU+
JiYpOworCisgICAgdm9pZCBzd2FwKE5ha2VkUHRyJik7CisKK3ByaXZhdGU6CisgICAgVCogbV9w
dHI7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2Vk
UHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHImIG8pCit7CisgICAgbV9wdHIgPSBvLm1f
cHRyOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit7CisgICAgbV9w
dHIgPSBvcHRyOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
dGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3Bl
cmF0b3I9KGNvbnN0IE5ha2VkUHRyPFU+JiBvKQoreworICAgIE5ha2VkUHRyIHB0ciA9IG87Cisg
ICAgc3dhcChwdHIpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2VkUHRyJiYg
bykKK3sKKyAgICBOYWtlZFB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgc3dhcChwdHIpOwor
ICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2Vk
UHRyPFU+JiYgbykKK3sKKyAgICBOYWtlZFB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgc3dh
cChwdHIpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5l
IHZvaWQgTmFrZWRQdHI8VD46OnN3YXAoTmFrZWRQdHImIG8pCit7CisgICAgc3RkOjpzd2FwKG1f
cHRyLCBvLm1fcHRyKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChO
YWtlZFB0cjxUPiYgYSwgTmFrZWRQdHI8VD4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpOYWtlZFB0cjsKKworI2VuZGlmIC8vIFdU
Rl9OYWtlZFB0cl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNS0w
Ni0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4mIHRvIHJldHVybiBleGNlcHRpb24gcmVzdWx0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTg3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyBXZWJDb3JlIHRlc3Rz
IGJlY2F1c2UgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKyAgICAgICAgQVBJIHRlc3RzIGFkZGVkIGZvciBXVEY6Ok5ha2VkUHRyLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxl
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlv
bkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2Fs
bCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6Ondvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxs
V2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
aW1wb3J0U2NyaXB0cyk6CisKIDIwMTUtMDYtMTIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtp
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgaW4gSmF2YVNjcmlwdENv
cmUgLSAyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuY3BwCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbGxiYWNrRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgSlNWYWx1
ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVu
dEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCi0gICAgRXhjZXB0
aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBjb250ZXh0LT5pc0RvY3VtZW50KCkKICAgICAgICAgPyBKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pCiAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE4NTUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNyArOTMsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCBwcmVmaXgpKTsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dmFsID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG1fY3VzdG9tUmVzb2x2ZXIuZ2V0KCksIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICBTdHJp
bmcgcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFcnJvckhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEUKICAgICAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwg
dm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2Jq
ZWN0KTsKIAotICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICAgICAgTmFrZWRQdHI8
RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKICAgICAgICAgICAgID8gSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Z2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pCiAgICAgICAgICAgICA6IEpTQzo6Y2FsbChl
eGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncywg
ZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsVHlw
ZSwgY2FsbERhdGEpOwogCiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxlRXZlbnRG
dW5jdGlvbiA9PSBqc0Z1bmN0aW9uID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50LT5j
dXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRp
b247CisgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBKU1Zh
bHVlIHJldHZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKQogICAgICAg
ICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbikKICAg
ICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCShy
ZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTQgQEAgdm9pZCBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmRpZExlYXZlU2NyaQogICAgIE11dGF0aW9uT2JzZXJ2ZXI6
OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKIH0KIAotSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVu
Y3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
IGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFy
Z3MsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24pCitKU0M6OkpTVmFsdWUgZnVu
Y3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlND
OjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6
QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bikKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBKU01haW5UaHJl
YWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0
YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTQzo6
Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKIH0KIAotSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFu
ZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNl
Q29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbiomIHJl
dHVybmVkRXhjZXB0aW9uKQorSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlUaHJl
YWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVk
RXhjZXB0aW9uKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIEpT
TWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIHJl
dHVybmVkRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTMgKzUwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNfbWFpblRocmVh
ZFN0YXRlOwogICAgIH07CiAgICAgCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5
cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6RXhjZXB0aW9uKiYgcmV0
dXJuZWRFeGNlcHRpb24pCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2Fs
bFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGV4ZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIH07CiAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKKyAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpT
TWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CiAgICAgICAgIHJldHVybiBK
U0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZSwgdGhpc1ZhbHVlLCByZXR1cm5lZEV4Y2VwdGlvbik7
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZh
bHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNl
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gSlNDOjpKU1ZhbHVlKCkpCiAgICAgewotICAgICAg
ICBKU0M6OkV4Y2VwdGlvbiogdW51c2VkOworICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gdW51c2VkOwogICAgICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFs
dWUsIHVudXNlZCk7CiAgICAgfTsKIApAQCAtMTI3LDggKzEyNyw4IEBAIHByaXZhdGU6CiAgICAg
SlNDOjpFeGVjU3RhdGUqIG1fcHJldmlvdXNTdGF0ZTsKIH07CiAKLUpTQzo6SlNWYWx1ZSBmdW5j
dGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNl
cHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7Ci1KU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVy
RnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24p
OworSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlLCBjb25z
dCBKU0M6OkNhbGxEYXRhJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdM
aXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsK
K0pTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3
ICs4Nyw3IEBAIHZvaWQgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0IFZlY3QKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVj
U3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRh
KTsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOwogICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBjYWxsYmFj
aywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc09ic2VydmVyLCBhcmdzLCBleGNlcHRpb24pOwogCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250
ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5DCiAKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKCZjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCi0gICAgRXhj
ZXB0aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAg
ICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODU1MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXIKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1l
LCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCkpOwogCi0gICAgRXhjZXB0aW9uKiBl
dmFsdWF0aW9uRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4
Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpldmFsdWF0ZShleGVjLCBqc1NvdXJjZUNvZGUsIHNoZWxsLCBldmFsdWF0aW9uRXhjZXB0aW9u
KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29v
a2llLCBtX2ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODU1MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvCiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOwogICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbik7CiAgICAgaWYg
KGV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKQEAgLTEwNyw5
ICsxMDcsOCBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAg
fQogfQogCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRp
b24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuZWRFeGNlcHRpb24gPSBudWxscHRyOwogICAgIGlmIChp
c0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAKQEAgLTExOCwyOCArMTE3
LDI2IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgSlNDOjpFeGNlcHRpb24qIGV2YWx1
YXRpb25FeGNlcHRpb247Ci0gICAgSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLmpzU291
cmNlQ29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNT
b3VyY2VDb2RlKCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJl
dHVybmVkRXhjZXB0aW9uKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKChl
dmFsdWF0aW9uRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihldmFs
dWF0aW9uRXhjZXB0aW9uKSkgCisgICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKQogICAgICAgICB8fCAo
dm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoKSkpIHsKICAgICAgICAgZm9yYmlk
RXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZXZhbHVhdGlv
bkV4Y2VwdGlvbikgeworICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IDA7CiAgICAgICAgIGlu
dCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29k
ZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0
aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpIHsKICAgICAgICAgICAgIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkp
KTsKLSAgICAgICAgICAgIGV2YWx1YXRpb25FeGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICB2bS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybmVkRXhj
ZXB0aW9uID0gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmgJKHJldmlzaW9uIDE4NTUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewpAQCAtNjAsNyAr
NjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICAgICAgdm9pZCBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQg
c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAxODU1MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzQyLDcgKzM0Miw3IEBAIC0gKGlkKWNhbGxXZWJTY3JpcHRNZXRob2Q6KE5T
U3RyaW5nICopbmEKICAgICBpZiAoIVtzZWxmIF9pc1NhZmVTY3JpcHRdKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgW3NlbGYgX2ltcF0sIGFyZ0xpc3QsIGV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXhjZXB0aW9u
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAkocmV2aXNpb24gMTg1NTMyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvCiAKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlw
dExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKIAotICAgICAg
ICBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkp
LCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBtX3Nj
cmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU1MzIpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNi0xMiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4mIHRvIHJldHVybiBleGNlcHRpb24gcmVzdWx0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2Vi
S2l0QVBJLnZjeHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZj
eHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bmFrZWRQdHJGb28p
OgorCiAyMDE1LTA2LTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0IHR5cGUKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTg1NTMyKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBzZXQo
VGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01hdGhF
eHRyYXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01lZGlhVGltZS5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWV0YUFsbG9jYXRvci5jcHAK
KyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9SZWZQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9q
CShyZXZpc2lvbiAxODU1MzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
dmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2ICsz
MjMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXE1hdGhFeHRyYXMu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXE1lZGlhVGltZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcTWV0YUFsbG9jYXRv
ci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcTmFrZWRQdHIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXE9wdGlvbmFsLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxSZWRCbGFja1RyZWUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXFJlZi5jcHAiIC8+
CkBAIC0zNjQsNCArMzY1LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNp
b25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0
QVBJLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTg1NTMyKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXFRlc3RzXFdURlxNZWRpYVRpbWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0
c1xXVEZcTmFrZWRQdHIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcUmVm
LmNwcCI+CiAgICAgICA8RmlsdGVyPlRlc3RzXFdURjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpAQCAtMTc0LDQgKzE3Nyw0IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iVGVzdFdlYktpdEFQSVBv
c3RCdWlsZC5jbWQiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iVGVzdFdlYktpdEFQSVByZUJ1aWxk
LmNtZCIgLz4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPC9Qcm9qZWN0PgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE4NTUzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDcgQEAKIAkJRjZC
N0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JF
OTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07
CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9C
dW5kbGUuY3BwICovOyB9OwogCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJ
CUZFQjZGNzUxMUIyQkE0NjQwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIg
LyogTmFrZWRQdHIuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC03MjgsNiArNzI5
LDcgQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkRE
REQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlD
YWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
QnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
MTA3Myw2ICsxMDc1LDcgQEAKIAkJCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRv
ci5jcHAgKi8sCiAJCQkJOTNBNDI3QUMxODBEQTYwRjAwQ0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8s
CisJCQkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLywKIAkJCQkx
QUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCTBGQzZDNENC
MTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgw
REEyNjQwMENEMjRENyAvKiBSZWYuY3BwICovLApAQCAtMTUwMCw2ICsxNTAzLDcgQEAKIAkJCQk3
Q0NFN0YwMjFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjAzMUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YwNDFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQjZGNzUxMUIyQkE0NjQwMDlFNDky
MiAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNTFBNDExQUU2MDA0
NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYwMDQ0N0M0QyAvKiBPcGVuQW5kQ2xvc2VXaW5k
b3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YzRDFBNDExQjhFMDA0NDdDNEMgLyogT3B0
aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9OYWtlZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTmFrZWRQdHIuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTmFrZWRQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL05ha2VkUHRy
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gRm9yIHRoZXNlIHRlc3RzLCB3
ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3Nl
LAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2Vz
LgorCitURVNUKFdURl9OYWtlZFB0ciwgQmFzaWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CisKKyAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAgIEFTU0VSVF9FUShu
dWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBB
U1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5h
bWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIgPSAm
YTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBOYWtlZFB0cjxSZWZM
b2dnZXI+IHAyKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQ
dHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyID0g
cDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURjo6bW92ZShw
MSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMihXVEY6Om1vdmUocDEp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyID0gV1RGOjptb3Zl
KHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9n
Z2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAg
IHB0ci5jbGVhcigpOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX05ha2VkUHRyLCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAg
ICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBOYWtlZFB0cjxS
ZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAg
ICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+
IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IFdURjo6bW92ZShwMik7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOwor
ICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQ
dHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci5nZXQoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAg
ICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAg
IHAxID0gV1RGOjptb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
TmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5n
ZXQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IFdURjo6
bW92ZShwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorfQor
CitURVNUKFdURl9OYWtlZFB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAg
IFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4g
cDEoJmEpOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOwor
ICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
TmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4g
cDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7
CisgICAgfQorfQorCitOYWtlZFB0cjxSZWZMb2dnZXI+IG5ha2VkUHRyRm9vKFJlZkxvZ2dlciYg
bG9nZ2VyKQoreworICAgIHJldHVybiBOYWtlZFB0cjxSZWZMb2dnZXI+KCZsb2dnZXIpOworfQor
CitURVNUKFdURl9OYWtlZFB0ciwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gbmFrZWRQdHJGb28oYSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAm
KnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254962</attachid>
            <date>2015-06-16 13:12:04 -0700</date>
            <delta_ts>2015-06-16 13:42:09 -0700</delta_ts>
            <desc>patch 3: applied Anders&apos; feedback.</desc>
            <filename>bug-145870c.patch</filename>
            <type>text/plain</type>
            <size>57405</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDE1LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJuIGV4Y2VwdGlvbiByZXN1bHRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHIxODUy
NTksIGNhbGxzIGludG8gdGhlIFZNIHRha2VzIGEgSlNWYWx1ZSogZXhjZXB0aW9uIHJlc3VsdCBh
cmd1bWVudCBmb3IKKyAgICAgICAgcmV0dXJuaW5nIGFueSB1bmNhdWdodCBleGNlcHRpb24gdGhh
dCBtYXkgaGF2ZSBiZWVuIHRocm93biB3aGlsZSBleGVjdXRpbmcgSlMgY29kZS4KKyAgICAgICAg
QXMgYSByZXN1bHQsIGNsaWVudHMgb2YgdGhlIFZNIGZ1bmN0aW9ucyB3aWxsIGRlY2xhcmUgYSBs
b2NhbCBKU1ZhbHVlIGV4Y2VwdGlvbgorICAgICAgICByZXN1bHQgd2hpY2ggaXMgYXV0b21hdGlj
YWxseSBpbml0aWFsaXplZCB0byBhIG51bGwgdmFsdWUgKGkuZS4gdGhlIGVtcHR5IHZhbHVlLAor
ICAgICAgICBub3QgdGhlIEpTIG51bGwgdmFsdWUpLgorCisgICAgICAgIFdpdGggcjE4NTI1OSwg
dGhlIFZNIGZ1bmN0aW9ucyB3ZXJlIGNoYW5nZWQgdG8gdGFrZSBhbiBFeGNlcHRpb24qJiBleGNl
cHRpb24gcmVzdWx0CisgICAgICAgIGluc3RlYWQsIGFuZCB0aGUgVk0gZnVuY3Rpb25zIGFyZSBy
ZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBleGNlcHRpb24gcmVzdWx0CisgICAgICAg
IHRvIG51bGwgaWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KKworICAgICAgICBUaGlzIGludHJv
ZHVjZXMgMiBpc3N1ZXM6CisKKyAgICAgICAgMS4gdGhlIFZNIGZ1bmN0aW9ucyBhcmUgdnVsbmVy
YWJsZSB0byBtb2RpZmljYXRpb25zIHRoYXQgbWF5IGFkZCBlYXJseSByZXR1cm5zCisgICAgICAg
ICAgIGJlZm9yZSB0aGUgZXhjZXB0aW9uIHJlc3VsdCBpcyBudWxsaWZpZWQuICBUaGlzIGNhbiBy
ZXN1bHQgaW4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICByZXN1bHQgYmVpbmcgdXNlZCB3aXRo
b3V0IGluaXRpYWxpemF0aW9uLgorCisgICAgICAgIDIuIFByZXZpb3VzbHksIGEgY2xpZW50IGNv
dWxkIHRlY2huaWNhbGx5IHVzZSB0aGUgc2FtZSBleGNlcHRpb24gcmVzdWx0IGZvciBtb3JlCisg
ICAgICAgICAgIHRoYW4gb25lIGNhbGxzIGludG8gdGhlIFZNIGZ1bmN0aW9ucy4gIElmIGFuIGVh
cmxpZXIgY2FsbCBzZXRzIGl0IHRvIGEgdGhyb3duCisgICAgICAgICAgIHZhbHVlLCB0aGUgdGhy
b3duIHZhbHVlIHdpbGwgc3RpY2sgdW5sZXNzIGEgc3Vic2VxdWVudCBjYWxsIHRocm93cyBhIGRp
ZmZlcmVudAorICAgICAgICAgICBleGNlcHRpb24uCisKKyAgICAgICAgICAgV2l0aCB0aGUgbmV3
IEV4Y2VwdGlvbiomIGV4Y2VwdGlvbiByZXN1bHQsIHRoZSBWTSBmdW5jdGlvbnMgd2lsbCBhbHdh
eXMgY2xlYXIKKyAgICAgICAgICAgdGhlIGV4Y2VwdGlvbiByZXN1bHQgYmVmb3JlIHByb2NlZWRp
bmcuICBBcyBhIHJlc3VsdCwgdGhlIGNsaWVudCdzIGV4Y2VwdGlvbgorICAgICAgICAgICByZXN1
bHQgd2lsbCBiZSBudWxsIGFmdGVyIHRoZSBzZWNvbmQgY2FsbCBldmVuIHRob3VnaCB0aGUgZmly
c3QgY2FsbCBzYXcgYW4KKyAgICAgICAgICAgZXhjZXB0aW9uIHRocm93bi4gIFRoaXMgaXMgYSBj
aGFuZ2UgaW4gdGhlIGV4cGVjdGVkIGJlaGF2aW9yLgorCisgICAgICAgIFRvIGZpeCB0aGVzZSBp
c3N1ZXMsIHdlJ2xsIGludHJvZHVjZSBhIE5ha2VkUHRyIHNtYXJ0IHBvaW50ZXIgd2hvc2Ugc29s
ZSBwdXJwb3NlCisgICAgICAgIGlzIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBwb2ludGVyIGlzIGlu
aXRpYWxpemVkLiAgVGhlIFZNIGZ1bmN0aW9ucyB3aWxsIG5vdyB0YWtlCisgICAgICAgIGEgTmFr
ZWRQdHI8RXhjZXB0aW9uPiYgaW5zdGVhZCBvZiB0aGUgRXhjZXB0aW9uKiYuICBUaGlzIGVuc3Vy
ZXMgdGhhdCB0aGUKKyAgICAgICAgZXhjZXB0aW9uIHJlc3VsdCBpcyBpbml0aWFsaXplZC4KKwor
ICAgICAgICBUaGUgVk0gZnVuY3Rpb25zIGJlIGFsc28gcmV2ZXJ0ZWQgdG8gb25seSBzZXQgdGhl
IGV4Y2VwdGlvbiByZXN1bHQgaWYgYSBuZXcKKyAgICAgICAgZXhjZXB0aW9uIGlzIHRocm93bi4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6
CisgICAgICAgICogQVBJL0pTU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpo
YXNCcmVha3BvaW50KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpl
dmFsdWF0ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmlzVmFsaWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dm1FbnRyeUdsb2Jh
bE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNW
YWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKToK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAgICAgICAoZnVu
Y3Rpb25Mb2FkKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
Y2FsbCk6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpT
Qzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAo
SlNDOjpldmFsdWF0ZSk6CisKIDIwMTUtMDYtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgYm9vbGlmeSgpIFVudHlwZWRVc2UgaXMgd3JvbmcgaW4gdGhl
IG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZCBjYXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
cmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwOCw3ICs5MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuCiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCiAgICAgICAgIGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
ICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAg
TmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsK
ICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKICAgICBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwganNjU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBl
eGNlcHRpb24pOwpAQCAtOTMxLDcgKzkzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Mb2EKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCi0gICAgRXhjZXB0aW9uKiBldmFsdWF0aW9u
RXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV2YWx1YXRpb25FeGNlcHRpb24pOwpAQCAtMTI5
NCw3ICsxMjk0LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0Kgog
CiAgICAgICAgIHZtLnN0YXJ0U2FtcGxpbmcoKTsKIAotICAgICAgICBFeGNlcHRpb24qIGV2YWx1
YXRpb25FeGNlcHRpb247CisgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4
Y2VwdGlvbjsKICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUo
KSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmICFl
dmFsdWF0aW9uRXhjZXB0aW9uOwogICAgICAgICBpZiAoZHVtcCAmJiAhZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEds
b2JhbE9iamVjdCoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgCi0gICAgICAgIEV4Y2Vw
dGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlLCBpbnRlcnBy
ZXRlck5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogI2Vsc2UKICAgICAg
ICAgcHJpbnRmKCIlcyIsIGludGVyYWN0aXZlUHJvbXB0KTsKQEAgLTEzNzQsNyArMTM3NCw3IEBA
IHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKIAotICAgICAgICBFeGNlcHRpb24qIGV2
YWx1YXRpb25FeGNlcHRpb247CisgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2UobGluZS5kYXRhKCksIGludGVycHJldGVy
TmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jh
c2UuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNWYWx1ZVJlZiBKU0V2
YWx1YXRlU2NyaXB0KEpTQ29udGV4dFJlZgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgU291cmNlQ29kZSBzb3VyY2Ug
PSBtYWtlU291cmNlKHNjcmlwdC0+c3RyaW5nKCksIHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3Ry
aW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNl
ZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKLSAg
ICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc291cmNlLCBqc1RoaXNPYmplY3QsIGV2YWx1
YXRpb25FeGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCShyZXZpc2lvbiAxODU2
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIEpTVmFsdWVSZWYgSlNTY3JpcHRFdmFsdWF0ZShK
U0NvbnRleHRSZWYKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIEV4Y2VwdGlvbiogaW50ZXJuYWxFeGNlcHRpb247Cisg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5k
ZWZpbmVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2Rl
KHNjcmlwdCksIHRoaXNWYWx1ZSwgaW50ZXJuYWxFeGNlcHRpb24pOwogICAgIGlmIChpbnRlcm5h
bEV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0
RnVuY3Rpb25DYQogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGlmIChtX2NhbGxIYW5kbGVyKQogICAgICAg
ICByZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6
IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5
cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6RXhjZXB0aW9uKiYgZXhjZXB0aW9uKTsK
KyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRo
aXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBo
YW5kbGVyID0gbnVsbHB0cik7CiAgICAgU2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRp
b24pOwogICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNiBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQ2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKLQogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKQEAgLTQ4Nyw3ICs0ODYsNyBAQCBib29sIERlYnVnZ2VyOjpoYXNCcmVha3BvaW50
KFNvdXJjZUlEIHNvCiAgICAgLy8gc28gbWFrZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBp
cyBhbHJlYWR5IHBhdXNlZC4KICAgICBUZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgq
dGhpcyk7CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRp
b24+IGV4Y2VwdGlvbjsKICAgICBEZWJ1Z2dlckNhbGxGcmFtZSogZGVidWdnZXJDYWxsRnJhbWUg
PSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVn
Z2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShicmVha3BvaW50LT5jb25kaXRpb24sIGV4Y2VwdGlvbik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCShyZXZp
c2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIENvZGVCbG9jazsKK2NsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgU291cmNlUHJvdmlkZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJl
dmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEZWJ1Z2dlckV2YWxFbmFibGVyLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXJTY29wZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCkBAIC0xNzcsMTAgKzE3Niw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZSgpIGMKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNv
ZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCi1KU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1l
OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgRXhjZXB0aW9uKiYgZXhjZXB0aW9uKQor
SlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IE5ha2VkUHRyPEV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgp
KTsKLSAgICBleGNlcHRpb24gPSBudWxscHRyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
bV9jYWxsRnJhbWU7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5oCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVkZSAiU3Ryb25n
LmgiCisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgpAQCAtNjcsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFR5
cGUgdHlwZSgpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhpc1ZhbHVl
KCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb24q
Jik7CisgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmLCBOYWtlZFB0cjxFeGNlcHRp
b24+Jik7CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbEZyYW1l
OyB9CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnZhbGlkYXRlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksNyBAQCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+
Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKLSAgICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247
CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEluc3Bl
Y3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2YWx1
YXRlSGFuZGxlcigpOwogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFuZGxl
cihzY3JpcHRTdGF0ZSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgJ
KHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBjbGFz
cyBTb3VyY2VDb2RlOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdHlwZWRlZiBKU0M6OkpT
VmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBj
b25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9u
KTsKLXR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyKShKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFs
dWUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24pOwordHlwZWRlZiBKU0M6OkpT
VmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBj
b25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVk
RXhjZXB0aW9uKTsKK3R5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRXZhbHVhdGVIYW5k
bGVyKShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1
ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
OwogCiBjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVudCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJFcnJvci5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmgiCkBAIC03Niw3ICs3NSw3IEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2
YVNjcmlwdENhbGwKIAogSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwoKS5ldmFs
dWF0ZShleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIGV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDE4NTYwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7IH0KLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpT
Qzo6RXhjZXB0aW9uKiYgZXhjZXB0aW9uKSBjb25zdCAgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxG
cmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOyB9CisgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4
Y2VwdGlvbikgY29uc3QgIHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKHNj
cmlwdCwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUo
UGFzc1JlZlB0cjxKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lPik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2
aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1YXRlOiB7Ci0gICAgICAgIEV4
Y2VwdGlvbiogZXhjZXB0aW9uOworICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlv
bjsKICAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKGJyZWFrcG9pbnRBY3Rpb24u
ZGF0YSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZS0+ZXhlYygpLCBleGNlcHRpb24pOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2kK
ICAgICAgICAgZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQoZGVidWdnZXJDYWxsRnJhbWUt
PmV4ZWMoKSwgYnJlYWtwb2ludEFjdGlvbi5pZGVudGlmaWVyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2JlOiB7Ci0gICAgICAgIEV4Y2Vw
dGlvbiogZXhjZXB0aW9uOworICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsK
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUoYnJl
YWtwb2ludEFjdGlvbi5kYXRhLCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQog
ICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLT5leGVjKCksIGV4
Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEu
Y3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDYWxsRGF0YS5oIgogCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNDAsMTUgKzM5LDE0IEBAIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnUKICAgICByZXR1cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
ZXhlY3V0ZUNhbGwoZXhlYywgYXNPYmplY3QoZnVuY3Rpb25PYmplY3QpLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKLUpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBF
eGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBO
YWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
cmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKICAgICAgICAgZXhlYy0+Y2xl
YXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAjZGVmaW5lIENhbGxEYXRhX2gKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU5
LDcgKzYwLDcgQEAgdW5pb24gQ2FsbERhdGEgewogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBj
b25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci1KU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmLCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7CitKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2Fs
bFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3Qm
LCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwxMSBAQCBib29s
IGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiB9
CiAKLUpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikK
K0pTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2Vw
dGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VS
VChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVj
dG9yQnVzeSgpKTsKLSAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IG51bGxwdHI7CiAKICAgICBDb2Rl
UHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAjZGVmaW5lIENvbXBsZXRpb25faAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzYsMTAg
KzM3LDEwIEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVl
KiBleGNlcHRpb24gPSAwKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBFeGNlcHRpb24q
JiByZXR1cm5lZEV4Y2VwdGlvbik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSkKIHsKLSAgICBFeGNlcHRpb24qIHVudXNlZDsKKyAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IHVudXNlZDsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291
cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NjAw
KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBA
QAorMjAxNS0wNi0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHRvIHJldHVybiBleGNlcHRpb24gcmVzdWx0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTg3MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5n
IHRoZSBOYWtlZFB0ciBjbGFzcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHd0Zi9OYWtlZFB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
TmFrZWRQdHI6Ok5ha2VkUHRyKToKKyAgICAgICAgKFdURjo6TmFrZWRQdHI6OmdldCk6CisgICAg
ICAgIChXVEY6Ok5ha2VkUHRyOjpjbGVhcik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVy
YXRvciopOgorICAgICAgICAoV1RGOjpOYWtlZFB0cjo6b3BlcmF0b3ItPik6CisgICAgICAgIChX
VEY6Ok5ha2VkUHRyOjpvcGVyYXRvciBUKik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVy
YXRvciEpOgorICAgICAgICAoV1RGOjpOYWtlZFB0cjo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAg
IChXVEY6Oj0pOgorICAgICAgICAoV1RGOjpOYWtlZFB0cjxUPjo6c3dhcCk6CisgICAgICAgIChX
VEY6OnN3YXApOgorCiAyMDE1LTA2LTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR0xpYl0gTW92ZSBmaWxlcyB1bmRlciBTb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0IHRvIFNvdXJjZS9XVEYvd3RmL2dsaWIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3
IEBACiAJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM4MUE5NjI0NTUwMDUz
NkRGNiAvKiBXb3JrUXVldWUuaCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEw
MDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsgfTsKKwkJRkU4MjI1MzExQjJBMUU1QjAwQkE2OEZE
IC8qIE5ha2VkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLzsgfTsKIAkJRkU5
MUU4ODExQUIyQTAyMDAwOTk4OTVGIC8qIFNwaW5Mb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTkxRTg4MDFBQjJBMDIwMDA5OTg5NUYgLyogU3Bp
bkxvY2suaCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNE
M0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3Rh
dHMuaCAqLzsgfTsKQEAgLTU2OCw2ICs1NjksNyBAQAogCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQzQzFBOTYyNTNDMDA1
MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU5MUU4ODAxQUIyQTAyMDAwOTk4OTVGIC8qIFNwaW5Mb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwaW5Mb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODIsNiArNzg0LDcgQEAKIAkJCQlBOEE0NzJDRDE1
MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFB
ODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKIAkJCQlBOEE0NzJDRjE1MUE4MjVC
MDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICovLAorCQkJCUZFODIyNTMwMUIyQTFF
NUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovLAogCQkJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVB
NyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4NUIzMTcyMzRDQjEwMDMzODIxMCAv
KiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVCMDA0MTIzRkYgLyogTm9uY29weWFi
bGUuaCAqLywKQEAgLTExNzgsNiArMTE4MSw3IEBACiAJCQkJRkU5MUU4ODExQUIyQTAyMDAwOTk4
OTVGIC8qIFNwaW5Mb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQzE1MUE4MjVCMDA0
MTIzRkYgLyogU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQzRjE1MUE4
MjVCMDA0MTIzRkYgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MjI1MzEx
QjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4NzQ1
NDE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSGFzaGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzQ0MTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9OYWtlZFB0ci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL05ha2VkUHRyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9OYWtlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfTmFrZWRQ
dHJfaAorI2RlZmluZSBXVEZfTmFrZWRQdHJfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBOYWtl
ZFB0ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQUxXQVlT
X0lOTElORSBOYWtlZFB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CisgICAgQUxXQVlTX0lOTElO
RSBOYWtlZFB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE5h
a2VkUHRyKGNvbnN0IE5ha2VkUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IE5ha2VkUHRyKGNvbnN0IE5ha2VkUHRyPFU+JiBvKSA6IG1fcHRyKG8u
Z2V0KCkpIHsgfQorCisgICAgQUxXQVlTX0lOTElORSBOYWtlZFB0cihOYWtlZFB0ciYmIG8pIDog
bV9wdHIoby5nZXQoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTmFrZWRQdHIoTmFr
ZWRQdHI8VT4mJiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgfQorCisgICAgVCogZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9wdHI7IH0KKworICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0gbnVsbHB0cjsg
fQorCisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1f
cHRyOyB9CisgICAgQUxXQVlTX0lOTElORSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
bV9wdHI7IH0KKworICAgIG9wZXJhdG9yIFQqKCkgeyByZXR1cm4gbV9wdHI7IH0KKworICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisgICAgCisgICAgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KKworICAgIE5ha2VkUHRyJiBvcGVy
YXRvcj0oY29uc3QgTmFrZWRQdHImKTsKKyAgICBOYWtlZFB0ciYgb3BlcmF0b3I9KFQqKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBOYWtlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IE5ha2VkUHRy
PFU+Jik7CisgICAgTmFrZWRQdHImIG9wZXJhdG9yPShOYWtlZFB0ciYmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBOYWtlZFB0ciYgb3BlcmF0b3I9KE5ha2VkUHRyPFU+JiYpOworCisgICAg
dm9pZCBzd2FwKE5ha2VkUHRyJik7CisKK3ByaXZhdGU6CisgICAgVCogbV9wdHI7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgTmFrZWRQdHImIG8pCit7CisgICAgbV9wdHIgPSBvLm1fcHRyOworICAgIHJl
dHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE5ha2VkUHRyPFQ+
JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit7CisgICAgbV9wdHIgPSBvcHRyOwor
ICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IE5ha2VkUHRyPFU+JiBvKQoreworICAgIE5ha2VkUHRyIHB0ciA9IG87CisgICAgc3dhcChwdHIp
OworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE5h
a2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2VkUHRyJiYgbykKK3sKKyAgICBO
YWtlZFB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgc3dhcChwdHIpOworICAgIHJldHVybiAq
dGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5s
aW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2VkUHRyPFU+JiYgbykK
K3sKKyAgICBOYWtlZFB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgc3dhcChwdHIpOworICAg
IHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgTmFrZWRQ
dHI8VD46OnN3YXAoTmFrZWRQdHImIG8pCit7CisgICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRy
KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChOYWtlZFB0cjxUPiYg
YSwgTmFrZWRQdHI8VD4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpOYWtlZFB0cjsKKworI2VuZGlmIC8vIFdURl9OYWtlZFB0cl9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNS0wNi0xNiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ha2VkUHRyPEV4Y2VwdGlv
bj4mIHRvIHJldHVybiBleGNlcHRpb24gcmVzdWx0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyBXZWJDb3JlIHRlc3RzIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKyAg
ICAgICAgQVBJIHRlc3RzIGFkZGVkIGZvciBXVEY6Ok5ha2VkUHRyLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFj
a0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9y
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Ondv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0
aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0
cyk6CisKIDIwMTUtMDYtMTYgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+
CiAKICAgICAgICAgSW5jb3JyZWN0IG9yZGVyIG9mIGFyZ3VtZW50cyBpbiBpbml0aWFsLWxldHRl
ciBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEpT
VmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEoKIAogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3Ry
dW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIAotICAgIEV4
Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gY29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAgICAgID8gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKQogICAgICAgICA6IEpTQzo6Y2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4Y2VwdGlv
bik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBO
YQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgcHJlZml4KSk7CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsK
KyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHZhbCA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBtX2N1c3RvbVJlc29sdmVyLmdldCgpLCBhcmdzLCBleGNlcHRpb24pOwogCiAgICAg
U3RyaW5nIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vy
cm9ySGFuZGxlci5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUo
dm0sIHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2Jh
bE9iamVjdCk7CiAKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgICAgIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAgICAgICAgICA/IEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGdsb2JhbE9iamVjdCwgYXJncywgZXhjZXB0aW9uKQogICAgICAgICAgICAgOiBKU0M6OmNh
bGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsx
MjQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVj
U3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2Fs
bFR5cGUsIGNhbGxEYXRhKTsKIAogICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGhhbmRsZUV2
ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVu
dC0+Y3VycmVudFRhcmdldCgpKSA6IGpzRnVuY3Rpb247Ci0gICAgICAgIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uOworICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAg
SlNWYWx1ZSByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKICAg
ICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24p
CiAgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBAIHZv
aWQgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmkKICAgICBNdXRhdGlvbk9ic2Vy
dmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBmdW5jdGlvbkNh
bGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxE
YXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0
JiBhcmdzLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQorSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0
IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNl
cHRpb24pCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm4gSlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIHJldHVybiBK
U0M6OmNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiB9CiAKLUpTQzo6SlNWYWx1ZSBldmFsdWF0
ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb24q
JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55
VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbikKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVy
biBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZSwgdGhpc1ZhbHVl
LCByZXR1cm5lZEV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01haW5UaHJlYWRFeGVjU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkocmV2aXNpb24gMTg1NjAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDEzICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzX21haW5U
aHJlYWRTdGF0ZTsKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvbiom
IHJldHVybmVkRXhjZXB0aW9uKQorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBm
dW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVy
bmVkRXhjZXB0aW9uKTsKICAgICB9OwogCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24p
CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewogICAgICAg
ICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwogICAgICAgICByZXR1
cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRp
b24pOwpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTQzo6SlNWYWx1ZSgpKQogICAgIHsKLSAg
ICAgICAgSlNDOjpFeGNlcHRpb24qIHVudXNlZDsKKyAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHVudXNlZDsKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGV4ZWMsIHNvdXJjZSwgdGhp
c1ZhbHVlLCB1bnVzZWQpOwogICAgIH07CiAKQEAgLTEyNyw4ICsxMjcsOCBAQCBwcml2YXRlOgog
ICAgIEpTQzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCi1KU0M6OkpTVmFsdWUg
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6
RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24pOwotSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFu
ZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUm
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0
aW9uKTsKK0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSwg
Y29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6
QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bik7CitKU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRp
b25DYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNdXRhdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbChjb25zdCBWZWN0CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBjYWxs
RGF0YSk7CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRp
b24+IGV4Y2VwdGlvbjsKICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgY2Fs
bGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNPYnNlcnZlciwgYXJncywgZXhjZXB0aW9uKTsK
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwg
Y29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAg
dm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQwogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5z
dHJ1bWVudEZ1bmN0aW9uQ2FsbCgmY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIAotICAg
IEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCiAgICAgICAgIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6Y2FsbChleGVjLCBtX2Z1bmN0aW9uLmdldCgpLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTg1
NjAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9m
cmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpKTsKIAotICAgIEV4Y2VwdGlv
biogZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRp
b25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6ZXZhbHVhdGUoZXhlYywganNTb3VyY2VDb2RlLCBzaGVsbCwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KGNvb2tpZSwgbV9mcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjbwogICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRp
b24+IGV4Y2VwdGlvbjsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24pOwogICAg
IGlmIChleGNlcHRpb24pIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CkBAIC0x
MDcsOSArMTA3LDggQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwog
ICAgIH0KIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhj
ZXB0aW9uKQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKQogewotICAgIHJldHVybmVkRXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTgsMjgg
KzExNywyNiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAg
RXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMo
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAotICAgIEpTQzo6RXhjZXB0aW9uKiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZS5q
c1NvdXJjZUNvZGUoKSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2VDb2Rl
LmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlm
ICgoZXZhbHVhdGlvbkV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
ZXZhbHVhdGlvbkV4Y2VwdGlvbikpIAorICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVybmVkRXhjZXB0aW9uKSkKICAgICAgICAg
fHwgKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkpKSB7CiAgICAgICAgIGZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pIHsKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAwOwogICAgICAg
ICBpbnQgY29sdW1uTnVtYmVyID0gMDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJj
ZUNvZGUudXJsKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5z
YW5pdGl6ZVNjcmlwdEVycm9yKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpKSB7CiAgICAgICAgICAgICB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1w
bCgpKSk7Ci0gICAgICAgICAgICBldmFsdWF0aW9uRXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7
CisgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOwogICAgICAg
ICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm5l
ZEV4Y2VwdGlvbiA9IGV2YWx1YXRpb25FeGNlcHRpb247CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBEZXByZWNhdGVkIHsKQEAgLTYw
LDcgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgICAgIHZvaWQgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNl
cHRpb24pOworICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgICAgICB2
b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkocmV2aXNpb24gMTg1NjAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCAtIChpZCljYWxsV2ViU2NyaXB0TWV0aG9k
OihOU1N0cmluZyAqKW5hCiAgICAgaWYgKCFbc2VsZiBfaXNTYWZlU2NyaXB0XSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIFtzZWxmIF9pbXBdLCBhcmdMaXN0LCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2Vw
dGlvbikgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjbwogCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
Y3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CiAKLSAg
ICAgICAgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVS
TCgpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAg
bV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NjAwKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDYtMTYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOYWtlZFB0cjxF
eGNlcHRpb24+JiB0byByZXR1cm4gZXhjZXB0aW9uIHJlc3VsdHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU4NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVz
dFdlYktpdEFQSS52Y3hwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcDogQWRkZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5ha2VkUHRy
Rm9vKToKKwogMjAxNS0wNi0xNiAgVG9iaWFzIFJlaXNzICA8dG9iaSt3ZWJraXRAYmFzZWNvZGUu
ZGU+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2VsZiBhcyBhIGNvbW1pdHRlci4K
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTg1NjAwKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzks
NiArNzksNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL01lZGlhVGltZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWV0
YUFsbG9jYXRvci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTmFrZWRQ
dHIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWZQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdl
YktpdEFQSS52Y3hwcm9qCShyZXZpc2lvbiAxODU2MDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTMyMyw2ICszMjMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNc
V1RGXE1hdGhFeHRyYXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNc
V1RGXE1lZGlhVGltZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xX
VEZcTWV0YUFsbG9jYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0
c1xXVEZcTmFrZWRQdHIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNc
V1RGXE9wdGlvbmFsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdU
RlxSZWRCbGFja1RyZWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNc
V1RGXFJlZi5jcHAiIC8+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
dmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHBy
b2ouZmlsdGVycwkocmV2aXNpb24gMTg1NjAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDYgKzc1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3Rz
XFdURlxNZWRpYVRpbWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcTmFr
ZWRQdHIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcUmVmLmNwcCI+CiAg
ICAgICA8RmlsdGVyPlRlc3RzXFdURjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NTYwMCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDAsNiArMzAwLDcgQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8qIGFz
c29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFzc29j
aWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3RjM5
RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQg
LyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZERERE
NjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRGMTcy
OSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFQjZGNzUxMUIyQkE0NjQwMDlFNDkyMiAv
KiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovOyB9OwogLyog
RW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCkBAIC03MjgsNiArNzI5LDcgQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAw
MDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2
YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFD
NDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNkY3
NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA3Myw2ICsxMDc1LDcgQEAKIAkJCQlDRDU0
OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0
MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJOTNBNDI3QUMxODBE
QTYwRjAwQ0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8sCisJCQkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0
OTIyIC8qIE5ha2VkUHRyLmNwcCAqLywKIAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyog
T3B0aW9uYWwuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFj
a1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYuY3BwICov
LApAQCAtMTUwMCw2ICsxNTAzLDcgQEAKIAkJCQk3Q0NFN0YwMjFBNDExQUU2MDA0NDdDNEMgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RjAzMUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
YWlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNDFBNDExQUU2MDA0NDdDNEMgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZFQjZGNzUxMUIyQkE0NjQwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YwNTFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFB
RjYwMDQ0N0M0QyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YzRDFBNDExQjhFMDA0NDdDNEMgLyogT3B0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OYWtlZFB0ci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCShyZXZpc2lv
biAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9n
Z2VyLmgiCisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBk
ZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dl
ciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgorCitURVNUKFdURl9OYWtlZFB0ciwgQmFz
aWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBOYWtlZFB0cjxSZWZM
b2dnZXI+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAg
ICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAg
ICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQ
dHI8UmVmTG9nZ2VyPiBwMiA9IFdURjo6bW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQ
dHI8UmVmTG9nZ2VyPiBwMihXVEY6Om1vdmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAg
TmFrZWRQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdl
dCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBOYWtl
ZFB0cjxSZWZMb2dnZXI+IHAyID0gV1RGOjptb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX05ha2VkUHRy
LCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxv
Z2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAg
ICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dn
ZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRy
PFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwor
ICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdl
dCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAg
ICBwMSA9IFdURjo6bW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVm
TG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBOYWtl
ZFB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dl
cj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gV1RGOjptb3ZlKHAyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IFdURjo6bW92ZShwdHIpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9OYWtlZFB0ciwgU3dhcCkK
K3sKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxS
ZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAg
IHN0ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorfQorCitOYWtlZFB0cjxSZWZM
b2dnZXI+IG5ha2VkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBOYWtl
ZFB0cjxSZWZMb2dnZXI+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9OYWtlZFB0ciwgUmV0dXJu
VmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAg
IGF1dG8gcHRyID0gbmFrZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgm
YS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkK
</data>
<flag name="review"
          id="279978"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254966</attachid>
            <date>2015-06-16 13:42:09 -0700</date>
            <delta_ts>2015-06-16 13:42:09 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-145870d.patch</filename>
            <type>text/plain</type>
            <size>57573</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDE1LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJuIGV4Y2VwdGlvbiByZXN1bHRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uIGFuZCBGaWxpcCBQaXpsby4KKworICAg
ICAgICBCZWZvcmUgcjE4NTI1OSwgY2FsbHMgaW50byB0aGUgVk0gdGFrZXMgYSBKU1ZhbHVlKiBl
eGNlcHRpb24gcmVzdWx0IGFyZ3VtZW50IGZvcgorICAgICAgICByZXR1cm5pbmcgYW55IHVuY2F1
Z2h0IGV4Y2VwdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gdGhyb3duIHdoaWxlIGV4ZWN1dGluZyBK
UyBjb2RlLgorICAgICAgICBBcyBhIHJlc3VsdCwgY2xpZW50cyBvZiB0aGUgVk0gZnVuY3Rpb25z
IHdpbGwgZGVjbGFyZSBhIGxvY2FsIEpTVmFsdWUgZXhjZXB0aW9uCisgICAgICAgIHJlc3VsdCB3
aGljaCBpcyBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkIHRvIGEgbnVsbCB2YWx1ZSAoaS5lLiB0
aGUgZW1wdHkgdmFsdWUsCisgICAgICAgIG5vdCB0aGUgSlMgbnVsbCB2YWx1ZSkuCisKKyAgICAg
ICAgV2l0aCByMTg1MjU5LCB0aGUgVk0gZnVuY3Rpb25zIHdlcmUgY2hhbmdlZCB0byB0YWtlIGFu
IEV4Y2VwdGlvbiomIGV4Y2VwdGlvbiByZXN1bHQKKyAgICAgICAgaW5zdGVhZCwgYW5kIHRoZSBW
TSBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIGV4Y2VwdGlv
biByZXN1bHQKKyAgICAgICAgdG8gbnVsbCBpZiBubyBleGNlcHRpb24gaXMgdGhyb3duLgorCisg
ICAgICAgIFRoaXMgaW50cm9kdWNlcyAyIGlzc3VlczoKKworICAgICAgICAxLiB0aGUgVk0gZnVu
Y3Rpb25zIGFyZSB2dWxuZXJhYmxlIHRvIG1vZGlmaWNhdGlvbnMgdGhhdCBtYXkgYWRkIGVhcmx5
IHJldHVybnMKKyAgICAgICAgICAgYmVmb3JlIHRoZSBleGNlcHRpb24gcmVzdWx0IGlzIG51bGxp
ZmllZC4gIFRoaXMgY2FuIHJlc3VsdCBpbiB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgIHJlc3Vs
dCBiZWluZyB1c2VkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uCisKKyAgICAgICAgMi4gUHJldmlv
dXNseSwgYSBjbGllbnQgY291bGQgdGVjaG5pY2FsbHkgdXNlIHRoZSBzYW1lIGV4Y2VwdGlvbiBy
ZXN1bHQgZm9yIG1vcmUKKyAgICAgICAgICAgdGhhbiBvbmUgY2FsbHMgaW50byB0aGUgVk0gZnVu
Y3Rpb25zLiAgSWYgYW4gZWFybGllciBjYWxsIHNldHMgaXQgdG8gYSB0aHJvd24KKyAgICAgICAg
ICAgdmFsdWUsIHRoZSB0aHJvd24gdmFsdWUgd2lsbCBzdGljayB1bmxlc3MgYSBzdWJzZXF1ZW50
IGNhbGwgdGhyb3dzIGEgZGlmZmVyZW50CisgICAgICAgICAgIGV4Y2VwdGlvbi4KKworICAgICAg
ICAgICBXaXRoIHRoZSBuZXcgRXhjZXB0aW9uKiYgZXhjZXB0aW9uIHJlc3VsdCwgdGhlIFZNIGZ1
bmN0aW9ucyB3aWxsIGFsd2F5cyBjbGVhcgorICAgICAgICAgICB0aGUgZXhjZXB0aW9uIHJlc3Vs
dCBiZWZvcmUgcHJvY2VlZGluZy4gIEFzIGEgcmVzdWx0LCB0aGUgY2xpZW50J3MgZXhjZXB0aW9u
CisgICAgICAgICAgIHJlc3VsdCB3aWxsIGJlIG51bGwgYWZ0ZXIgdGhlIHNlY29uZCBjYWxsIGV2
ZW4gdGhvdWdoIHRoZSBmaXJzdCBjYWxsIHNhdyBhbgorICAgICAgICAgICBleGNlcHRpb24gdGhy
b3duLiAgVGhpcyBpcyBhIGNoYW5nZSBpbiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgVG8gZml4IHRoZXNlIGlzc3Vlcywgd2UnbGwgaW50cm9kdWNlIGEgTmFrZWRQdHIgc21hcnQg
cG9pbnRlciB3aG9zZSBzb2xlIHB1cnBvc2UKKyAgICAgICAgaXMgdG8gZ3VhcmFudGVlIHRoYXQg
dGhlIHBvaW50ZXIgaXMgaW5pdGlhbGl6ZWQuICBUaGUgVk0gZnVuY3Rpb25zIHdpbGwgbm93IHRh
a2UKKyAgICAgICAgYSBOYWtlZFB0cjxFeGNlcHRpb24+JiBpbnN0ZWFkIG9mIHRoZSBFeGNlcHRp
b24qJi4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZQorICAgICAgICBleGNlcHRpb24gcmVzdWx0IGlz
IGluaXRpYWxpemVkLgorCisgICAgICAgIFRoZSBWTSBmdW5jdGlvbnMgYmUgYWxzbyByZXZlcnRl
ZCB0byBvbmx5IHNldCB0aGUgZXhjZXB0aW9uIHJlc3VsdCBpZiBhIG5ldworICAgICAgICBleGNl
cHRpb24gaXMgdGhyb3duLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgIChK
U0V2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6aXNWYWxpZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2
YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSW5zcGVjdG9yOjpKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlw
dENhbGxGcmFtZTo6dGhpc1ZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SmF2YVNjcmlwdENh
bGxGcmFtZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJy
ZWFrcG9pbnRBY3Rpb24pOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvblJ1
bik6CisgICAgICAgIChmdW5jdGlvbkxvYWQpOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgor
ICAgICAgICAocnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsKToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0
aW9uLmg6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKwogMjAxNS0wNi0xNSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTCBib29saWZ5KCkgVW50eXBlZFVz
ZSBpcyB3cm9uZyBpbiB0aGUgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkIGNhc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA4LDcgKzkwOCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dCgKICAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKLSAgICBFeGNlcHRpb24q
IGV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9w
V2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgpOwogICAgIGV2YWx1YXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5h
bWUpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CkBAIC05MzEsNyArOTMxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICAKLSAgICBFeGNl
cHRpb24qIGV2YWx1YXRpb25FeGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFs
dWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSksIEpT
VmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRp
b24pCiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0
cyhHbG9iYWxPYmplY3QqCiAKICAgICAgICAgdm0uc3RhcnRTYW1wbGluZygpOwogCi0gICAgICAg
IEV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZp
bGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgc3VjY2Vz
cyA9IHN1Y2Nlc3MgJiYgIWV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgICAgIGlmIChkdW1wICYm
ICFldmFsdWF0aW9uRXhjZXB0aW9uKQpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgc3RhdGljIHZvaWQg
cnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KgogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICAKLSAgICAgICAgRXhjZXB0aW9uKiBldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJj
ZShzb3VyY2UsIGludGVycHJldGVyTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CiAjZWxzZQogICAgICAgICBwcmludGYoIiVzIiwgaW50ZXJhY3RpdmVQcm9tcHQpOwpAQCAt
MTM3NCw3ICsxMzc0LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0
KgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGxpbmUuYXBwZW5kKCdcMCcpOwogCi0gICAg
ICAgIEV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICAgICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVl
ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShsaW5lLmRh
dGEoKSwgaW50ZXJwcmV0ZXJOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
ICNlbmRpZgogICAgICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJM
ID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6
OmZpcnN0KCkpKTsKIAotICAgIEV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR1
cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzb3VyY2UsIGpz
VGhpc09iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgSlNWYWx1ZVJlZiBK
U1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgRXhjZXB0aW9uKiBpbnRl
cm5hbEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGludGVybmFsRXhjZXB0aW9u
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpc1ZhbHVlUmVmID8gdG9KUyhleGVjLCB0aGlz
VmFsdWVSZWYpIDoganNVbmRlZmluZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRl
KGV4ZWMsIFNvdXJjZUNvZGUoc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7
CiAgICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkocmV2aXNpb24g
MTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhCiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgRXhjZXB0aW9uKiBleGNl
cHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgaWYgKG1fY2Fs
bEhhbmRsZXIpCiAgICAgICAgIHJlc3VsdCA9IG1fY2FsbEhhbmRsZXIobV9leGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywgZXhjZXB0aW9u
KTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2Ny
aXB0RnVuY3Rpb25DYWxsIDogcHVibGljIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgewogcHVi
bGljOgotICAgIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxl
cikoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlND
OjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNlcHRp
b24qJiBleGNlcHRpb24pOworICAgIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVuY3Rp
b25DYWxsSGFuZGxlcikoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2Fs
bERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+Jik7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0
IFNjcmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5j
dGlvbkNhbGxIYW5kbGVyIGhhbmRsZXIgPSBudWxscHRyKTsKICAgICBTY3JpcHRWYWx1ZSBjYWxs
KGJvb2wmIGhhZEV4Y2VwdGlvbik7CiAgICAgU2NyaXB0VmFsdWUgY2FsbCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAxODU2
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFcnJvci5oIgotCiAjaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNDg3LDcgKzQ4Niw3IEBAIGJvb2wgRGVidWdn
ZXI6Omhhc0JyZWFrcG9pbnQoU291cmNlSUQgc28KICAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxp
a2UgdGhlIGRlYnVnZ2VyIGlzIGFscmVhZHkgcGF1c2VkLgogICAgIFRlbXBvcmFyeVBhdXNlZFN0
YXRlIHBhdXNlZFN0YXRlKCp0aGlzKTsKIAotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIERlYnVnZ2VyQ2FsbEZyYW1lKiBk
ZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKGJyZWFrcG9pbnQtPmNvbmRp
dGlvbiwgZXhjZXB0aW9uKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmgJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgRXhjZXB0aW9uOwogY2xhc3Mg
RXhlY1N0YXRlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyRXZhbEVu
YWJsZXIuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTE3NywxMCArMTc2LDkgQEAgSlNW
YWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgYwogfQogCiAvLyBFdmFsdWF0ZSBz
b21lIEphdmFTY3JpcHQgY29kZSBpbiB0aGUgc2NvcGUgb2YgdGhpcyBmcmFtZS4KLUpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBFeGNlcHRp
b24qJiBleGNlcHRpb24pCitKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZXhjZXB0aW9uKQogewogICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwotICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBtX2NhbGxGcmFtZTsKICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIK
ICNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aGlzVmFsdWUoKSBjb25zdDsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbiomKTsKKyAgICBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYs
IE5ha2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9jYWxsRnJhbWU7IH0KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGludmFsaWRh
dGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJ
bmplY3RlZFNjcmlwdE0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0
U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1
ZSA9IHNjcmlwdFN0YXRlLT5nbG9iYWxUaGlzVmFsdWUoKTsKIAotICAgIEV4Y2VwdGlvbiogZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247CiAgICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1f
ZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7CiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVl
ID0gZXZhbHVhdGVIYW5kbGVyKHNjcmlwdFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFs
dWUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIFNvdXJjZUNvZGU7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci10eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIEpTQzo6RXhjZXB0aW9uKiYg
cmV0dXJuZWRFeGNlcHRpb24pOwotdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JFdmFs
dWF0ZUhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7
Cit0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwordHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNw
ZWN0b3JFdmFsdWF0ZUhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50IHsKIHB1Ymxp
YzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgog
I2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCIKQEAgLTc2LDcgKzc1LDcgQEAgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lOjp+SlNKYXZhU2NyaXB0Q2FsbAogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEV4Y2VwdGlvbiogZXhjZXB0
aW9uOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbCgpLmV2YWx1YXRlKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAko
cmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdCB7
IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7IH0KIAog
ICAgIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQ2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsgfQotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBT
dHJpbmcmIHNjcmlwdCwgSlNDOjpFeGNlcHRpb24qJiBleGNlcHRpb24pIGNvbnN0ICB7IHJldHVy
biBtX2RlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShzY3JpcHQsIGV4Y2VwdGlvbik7IH0KKyAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgZXhjZXB0aW9uKSBjb25zdCAgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxG
cmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgSmF2
YVNjcmlwdENhbGxGcmFtZShQYXNzUmVmUHRyPEpTQzo6RGVidWdnZXJDYWxsRnJhbWU+KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVh
dGU6IHsKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBkZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUo
YnJlYWtwb2ludEFjdGlvbi5kYXRhLCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLT5leGVjKCks
IGV4Y2VwdGlvbik7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZXZhbHVhdGVCcmVha3BvaQogICAgICAgICBkaXNwYXRjaEJyZWFrcG9pbnRBY3Rpb25Tb3VuZChk
ZWJ1Z2dlckNhbGxGcmFtZS0+ZXhlYygpLCBicmVha3BvaW50QWN0aW9uLmlkZW50aWZpZXIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU6
IHsKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgICAgIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZy
YW1lLT5ldmFsdWF0ZShicmVha3BvaW50QWN0aW9uLmRhdGEsIGV4Y2VwdGlvbik7CiAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJDYWxs
RnJhbWUtPmV4ZWMoKSwgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAKLSNpbmNs
dWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC00MCwxNSArMzksMTQgQEAg
SlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdQogICAgIHJldHVybiBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlQ2FsbChleGVjLCBhc09iamVjdChmdW5jdGlvbk9iamVj
dCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKIH0KIAotSlNWYWx1ZSBj
YWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUgY2Fs
bFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBj
YWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUgY2Fs
bFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQog
ewogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgewogICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwog
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBudWxscHRyOwor
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlzaW9u
IDE4NTYwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgQ2FsbERhdGFfaAogCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNTksNyArNjAsNyBAQCB1bmlvbiBDYWxsRGF0YSB7CiB9OwogCiBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYsIEV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9u
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEs
MTIgKzYxLDExIEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKICAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlBy
b2dyYW0sIGVycm9yKTsKIH0KIAotSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEV4Y2VwdGlvbiomIHJl
dHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZU
aHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwotICAgIHJldHVybmVkRXhjZXB0aW9uID0gbnVs
bHB0cjsKIAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiAxODU2MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgQ29tcGxldGlvbl9oCiAKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0zNiwxMCArMzcsMTAgQEAgY2xhc3MgVk07CiAKIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsK
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIEV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKTsKK0pTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBpbmxp
bmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKQogewotICAgIEV4Y2VwdGlv
biogdW51c2VkOworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gdW51c2VkOwogICAgIHJldHVybiBl
dmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFsdWUsIHVudXNlZCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJuIGV4Y2Vw
dGlvbiByZXN1bHRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1ODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNpbmcgdGhlIE5ha2VkUHRyIGNsYXNzLgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL05ha2VkUHRyLmg6IEFkZGVk
LgorICAgICAgICAoV1RGOjpOYWtlZFB0cjo6TmFrZWRQdHIpOgorICAgICAgICAoV1RGOjpOYWtl
ZFB0cjo6Z2V0KToKKyAgICAgICAgKFdURjo6TmFrZWRQdHI6OmNsZWFyKToKKyAgICAgICAgKFdU
Rjo6TmFrZWRQdHI6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVyYXRv
ci0+KToKKyAgICAgICAgKFdURjo6TmFrZWRQdHI6Om9wZXJhdG9yIFQqKToKKyAgICAgICAgKFdU
Rjo6TmFrZWRQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyOjpvcGVyYXRv
ciBib29sKToKKyAgICAgICAgKFdURjo6PSk6CisgICAgICAgIChXVEY6Ok5ha2VkUHRyPFQ+Ojpz
d2FwKToKKyAgICAgICAgKFdURjo6c3dhcCk6CisKIDIwMTUtMDYtMTIgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBNb3ZlIGZpbGVzIHVuZGVy
IFNvdXJjZS9XVEYvd3RmL2dvYmplY3QgdG8gU291cmNlL1dURi93dGYvZ2xpYgpJbmRleDogU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODU2MDApCisr
KyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzcsNiArMjc3LDcgQEAKIAkJRTRBMEFEM0ExQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtR
dWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRB
MEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovOyB9OwogCQlFNEEwQUQzRDFB
OTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdv
cmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI5NUUxRjAxNjFBNzI0MTAwODlBMkY1IC8qIEJ5
dGVPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovOyB9OworCQlGRTgyMjUz
MTFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0
ci5oICovOyB9OwogCQlGRTkxRTg4MTFBQjJBMDIwMDA5OTg5NUYgLyogU3BpbkxvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTFFODgwMUFCMkEw
MjAwMDk5ODk1RiAvKiBTcGluTG9jay5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87
IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OwpAQCAtNTY4LDYgKzU2OSw3IEBACiAJCUU0QTBB
RDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWVDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZU9yZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkxRTg4MDFBQjJBMDIwMDA5OTg5NUYgLyogU3Bpbkxv
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BpbkxvY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4Miw2ICs3ODQsNyBA
QAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywK
IAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5oICovLAogCQkJ
CUE4QTQ3MkNGMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggKi8sCisJ
CQkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8sCiAJCQkJMUEzRjZC
RTYxNzRBREEyMTAwQjJFRUE3IC8qIE5ldmVyRGVzdHJveWVkLmggKi8sCiAJCQkJMEYwRDg1QjMx
NzIzNENCMTAwMzM4MjEwIC8qIE5vTG9jay5oICovLAogCQkJCUE4QTQ3MkQwMTUxQTgyNUIwMDQx
MjNGRiAvKiBOb25jb3B5YWJsZS5oICovLApAQCAtMTE3OCw2ICsxMTgxLDcgQEAKIAkJCQlGRTkx
RTg4MTFBQjJBMDIwMDA5OTg5NUYgLyogU3BpbkxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDJDMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDNGMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTgyMjUzMTFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NDg3NDU0MTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDJEMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJp
bmdIYXNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQxMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL05ha2Vk
UHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTmFrZWRQdHIuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XVEYvd3RmL05ha2VkUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdURl9OYWtlZFB0cl9oCisjZGVmaW5lIFdURl9OYWtlZFB0cl9oCisKKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBjbGFzcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgd3JhcHBlZCBwb2ludGVyIHdpbGwg
bmV2ZXIgYmUKKy8vIHVzZWQgdW5pbml0aWFsaXplZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIE5ha2VkUHRyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBBTFdBWVNfSU5MSU5FIE5ha2VkUHRyKCkgOiBtX3B0cihudWxscHRyKSB7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIE5ha2VkUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgfQorICAgIEFMV0FZ
U19JTkxJTkUgTmFrZWRQdHIoY29uc3QgTmFrZWRQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTmFrZWRQdHIoY29uc3QgTmFrZWRQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIE5ha2VkUHRyKE5ha2Vk
UHRyJiYgbykgOiBtX3B0cihvLmdldCgpKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBO
YWtlZFB0cihOYWtlZFB0cjxVPiYmIG8pIDogbV9wdHIoby5nZXQoKSkgeyB9CisKKyAgICBUKiBn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorCisgICAgdm9pZCBjbGVhcigpIHsgbV9wdHIg
PSBudWxscHRyOyB9CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3B0cik7
IHJldHVybiAqbV9wdHI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiBtX3B0cjsgfQorCisgICAgb3BlcmF0b3IgVCooKSB7IHJldHVybiBtX3B0cjsg
fQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKyAgICAK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQor
CisgICAgTmFrZWRQdHImIG9wZXJhdG9yPShjb25zdCBOYWtlZFB0ciYpOworICAgIE5ha2VkUHRy
JiBvcGVyYXRvcj0oVCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5ha2VkUHRyJiBvcGVy
YXRvcj0oY29uc3QgTmFrZWRQdHI8VT4mKTsKKyAgICBOYWtlZFB0ciYgb3BlcmF0b3I9KE5ha2Vk
UHRyJiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5ha2VkUHRyJiBvcGVyYXRvcj0oTmFr
ZWRQdHI8VT4mJik7CisKKyAgICB2b2lkIHN3YXAoTmFrZWRQdHImKTsKKworcHJpdmF0ZToKKyAg
ICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBOYWtlZFB0cjxU
PiYgTmFrZWRQdHI8VD46Om9wZXJhdG9yPShjb25zdCBOYWtlZFB0ciYgbykKK3sKKyAgICBtX3B0
ciA9IG8ubV9wdHI7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKK3sK
KyAgICBtX3B0ciA9IG9wdHI7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRy
PFQ+OjpvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHI8VT4mIG8pCit7CisgICAgTmFrZWRQdHIgcHRy
ID0gbzsKKyAgICBzd2FwKHB0cik7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRvcj0oTmFr
ZWRQdHImJiBvKQoreworICAgIE5ha2VkUHRyIHB0ciA9IFdURjo6bW92ZShvKTsKKyAgICBzd2Fw
KHB0cik7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRv
cj0oTmFrZWRQdHI8VT4mJiBvKQoreworICAgIE5ha2VkUHRyIHB0ciA9IFdURjo6bW92ZShvKTsK
KyAgICBzd2FwKHB0cik7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdm9pZCBOYWtlZFB0cjxUPjo6c3dhcChOYWtlZFB0ciYgbykKK3sKKyAgICBzdGQ6
OnN3YXAobV9wdHIsIG8ubV9wdHIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9p
ZCBzd2FwKE5ha2VkUHRyPFQ+JiBhLCBOYWtlZFB0cjxUPiYgYikKK3sKKyAgICBhLnN3YXAoYik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Ok5ha2VkUHRyOworCisjZW5k
aWYgLy8gV1RGX05ha2VkUHRyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTYwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE1LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJuIGV4Y2VwdGlvbiByZXN1bHRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uIGFuZCBGaWxpcCBQaXpsby4KKworICAg
ICAgICBObyBuZXcgV2ViQ29yZSB0ZXN0cyBiZWNhdXNlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBh
bHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisgICAgICAgIEFQSSB0ZXN0cyBhZGRl
ZCBmb3IgV1RGOjpOYWtlZFB0ci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFj
ZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExp
c3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
ZGlkTGVhdmVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmV2YWx1YXRlSGFuZGxlckZy
b21BbnlUaHJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1
dGVGdW5jdGlvbkluQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUlu
V29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp3b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgY2FsbFdlYlNjcmlwdE1ldGhvZDp3aXRoQXJndW1lbnRzOl0p
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorCiAyMDE1LTA2LTE2ICBz
eWx2YWluLWdhbGluZWF1ICA8Z2FsaW5lYXVAYWRvYmUuY29tPgogCiAgICAgICAgIEluY29ycmVj
dCBvcmRlciBvZiBhcmd1bWVudHMgaW4gaW5pdGlhbC1sZXR0ZXIgcHJvcGVydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHJldmlzaW9u
IDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRh
OjppbnZva2VDYWxsYmFjayhKCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNv
bnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsK
KyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGNvbnRleHQtPmlzRG9jdW1lbnQoKQogICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3Ms
IGV4Y2VwdGlvbikKICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cAkocmV2aXNpb24gMTg1NjAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIFN0
cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmEKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHBy
ZWZpeCkpOwogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBleGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR2YWwgPSBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jdXN0b21SZXNv
bHZlci5nZXQoKSwgYXJncywgZXhjZXB0aW9uKTsKIAogICAgIFN0cmluZyByZXN1bHQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCShyZXZp
c2lvbiAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBKU0Vycm9ySGFuZGxl
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RQogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCB2bS5lbnRyeVNjb3BlID8g
dm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCkgOiBnbG9iYWxPYmplY3QpOwogCi0gICAgICAg
IEV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2Vw
dGlvbjsKICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKQogICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGV4Y2VwdGlvbikKICAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVu
Y3Rpb25DYWxsKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAK
ICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBoYW5kbGVFdmVudEZ1bmN0aW9uID09IGpzRnVu
Y3Rpb24gPyB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnQtPmN1cnJlbnRUYXJnZXQoKSkg
OiBqc0Z1bmN0aW9uOwotICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbjsKKyAgICAgICAgTmFr
ZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dmFsID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAgICAgICAgICA/IEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgZXhjZXB0aW9uKQogICAgICAgICAgICAgOiBKU0M6
OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAJKHJldmlzaW9uIDE4NTYwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0NiwxNCBAQCB2b2lkIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6ZGlkTGVhdmVTY3JpCiAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0
aW9ucygpOwogfQogCi1KU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJl
YWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlND
OjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNlcHRp
b24qJiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxs
RGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIGlmIChp
c01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2Fs
bChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFy
Z3MsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRF
eGNlcHRpb24pOwogfQogCi1KU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVh
ZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6RXhjZXB0aW9uKiYgcmV0dXJuZWRFeGNlcHRpb24p
CitKU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlz
VmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAg
ICAgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRpb24p
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkU3RhdGU7CiAgICAgfTsK
ICAgICAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29u
c3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikK
KyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlND
OjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6
QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhl
Yyk7CiAgICAgICAgIHJldHVybiBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
LCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKQorICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29k
ZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhl
Yywgc291cmNlLCB0aGlzVmFsdWUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUgPSBKU0M6OkpTVmFsdWUoKSkKICAgICB7Ci0gICAgICAgIEpTQzo6RXhjZXB0aW9u
KiB1bnVzZWQ7CisgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiB1bnVzZWQ7CiAgICAg
ICAgIHJldHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgdW51c2VkKTsKICAg
ICB9OwogCkBAIC0xMjcsOCArMTI3LDggQEAgcHJpdmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSog
bV9wcmV2aW91c1N0YXRlOwogfTsKIAotSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVk
RXhjZXB0aW9uKTsKLUpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbik7CitKU0M6OkpTVmFsdWUg
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOworSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5j
cHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25DYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBK
U011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdAogCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVu
dEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCi0gICAgRXhjZXB0
aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAg
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGpzT2JzZXJ2ZXIsIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lv
biAxODU2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlRnVuY3Rpb25JbkMKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwo
JmNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKLSAgICBFeGNlcHRpb24qIGV4Y2VwdGlv
bjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBpZiAoaXM8RG9jdW1l
bnQ+KGNvbnRleHQpKQogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywg
bV9mdW5jdGlvbi5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4
Y2VwdGlvbik7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsNyArMTYwLDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcgog
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwgc291
cmNlQ29kZS5zdGFydExpbmUoKSk7CiAKLSAgICBFeGNlcHRpb24qIGV2YWx1YXRpb25FeGNlcHRp
b247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpT
VmFsdWUgcmV0dXJuVmFsdWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKGV4ZWMs
IGpzU291cmNlQ29kZSwgc2hlbGwsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUsIG1fZnJhbWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0
aW9uKiBleGNlcHRpb247CisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAg
ZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAg
ICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwpAQCAtMTA3LDkgKzEwNyw4IEBAIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAgICB9CiB9CiAKLXZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgSlNDOjpFeGNlcHRpb24qJiByZXR1cm5lZEV4Y2VwdGlvbikKK3ZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKLSAg
ICByZXR1cm5lZEV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE4LDI4ICsxMTcsMjYgQEAgdm9pZCBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAKLSAgICBKU0M6OkV4Y2VwdGlvbiogZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
LSAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIGV2YWx1YXRpb25FeGNlcHRpb24p
OworICAgIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24p
OwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoKGV2YWx1YXRpb25FeGNlcHRp
b24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV2YWx1YXRpb25FeGNlcHRpb24p
KSAKKyAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpCiAgICAgICAgIHx8ICh2bS53YXRjaGRvZyAmJiB2
bS53YXRjaGRvZy0+ZGlkRmlyZSgpKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7Cisg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7
CiAgICAgICAgIGludCBsaW5lTnVtYmVyID0gMDsKICAgICAgICAgaW50IGNvbHVtbk51bWJlciA9
IDA7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygp
OwogICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+c2FuaXRpemVTY3JpcHRFcnJvcihl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBzb3VyY2VD
b2RlLmNhY2hlZFNjcmlwdCgpKSkgewogICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpOwotICAgICAgICAgICAg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0dXJu
ZWRFeGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhjZXB0
aW9uKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuZWRFeGNlcHRpb24gPSBldmFsdWF0
aW9uRXhjZXB0aW9uOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2Vw
dGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTg1
NjAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8ZGVidWdnZXIv
RGVidWdnZXIuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCiBuYW1lc3BhY2UgRGVwcmVjYXRlZCB7CkBAIC02MCw3ICs2MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOwotICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmLCBKU0M6OkV4Y2VwdGlvbiomIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oSlND
OjpFeGNlcHRpb24qKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDE4NTYwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
NyArMzQyLDcgQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYQogICAg
IGlmICghW3NlbGYgX2lzU2FmZVNjcmlwdF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBK
U0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBl
eGNlcHRpb247CiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBbc2VsZiBfaW1wXSwg
YXJnTGlzdCwgZXhjZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAxODU2
MDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6Omlt
cG9ydFNjcmlwdHMoY28KIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlw
dEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0TG9hZGVyLT5pZGVudGlm
aWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogCi0gICAgICAgIEpTQzo6RXhjZXB0aW9u
KiBleGNlcHRpb247CisgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdExvYWRl
ci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSksIGV4Y2VwdGlvbik7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRp
b24oZXhjZXB0aW9uKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTYwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgTmFrZWRQdHI8RXhjZXB0aW9uPiYgdG8gcmV0dXJu
IGV4Y2VwdGlvbiByZXN1bHRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ1ODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
IGFuZCBGaWxpcCBQaXpsby4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdl
YktpdEFQSS52Y3hwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52
Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5ha2VkUHRyRm9v
KToKKwogMjAxNS0wNi0xNiAgVG9iaWFzIFJlaXNzICA8dG9iaSt3ZWJraXRAYmFzZWNvZGUuZGU+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2VsZiBhcyBhIGNvbW1pdHRlci4KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTg1NjAwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzksNiAr
NzksNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL01hdGhFeHRyYXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L01lZGlhVGltZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWV0YUFs
bG9jYXRvci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTmFrZWRQdHIu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWZQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktp
dEFQSS52Y3hwcm9qCShyZXZpc2lvbiAxODU2MDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMyMyw2ICszMjMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RG
XE1hdGhFeHRyYXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RG
XE1lZGlhVGltZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZc
TWV0YUFsbG9jYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xX
VEZcTmFrZWRQdHIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RG
XE9wdGlvbmFsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxS
ZWRCbGFja1RyZWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RG
XFJlZi5jcHAiIC8+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4
cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTg1NjAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDYgKzc1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdU
RlxNZWRpYVRpbWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcTmFrZWRQ
dHIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcUmVmLmNwcCI+CiAgICAg
ICA8RmlsdGVyPlRlc3RzXFdURjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NTYwMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDAsNiArMzAwLDcgQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8qIGFzc29j
aWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFzc29jaWF0
ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3RjM5RCAv
KiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyog
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZERERENjE0
MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAv
KiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFQjZGNzUxMUIyQkE0NjQwMDlFNDkyMiAvKiBO
YWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovOyB9OwogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSBzZWN0aW9uICovCkBAIC03MjgsNiArNzI5LDcgQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdG
MzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRl
QnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgw
MDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
cHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNkY3NEUx
QjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA3Myw2ICsxMDc1LDcgQEAKIAkJCQlDRDU0OTdC
MzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAz
NEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJOTNBNDI3QUMxODBEQTYw
RjAwQ0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8sCisJCQkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIy
IC8qIE5ha2VkUHRyLmNwcCAqLywKIAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyogT3B0
aW9uYWwuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1Ry
ZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYuY3BwICovLApA
QCAtMTUwMCw2ICsxNTAzLDcgQEAKIAkJCQk3Q0NFN0YwMjFBNDExQUU2MDA0NDdDNEMgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjAzMUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWls
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNDFBNDExQUU2MDA0NDdDNEMgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFQjZGNzUxMUIyQkE0NjQwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YwNTFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RnJhbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYw
MDQ0N0M0QyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YzRDFBNDExQjhFMDA0NDdDNEMgLyogT3B0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OYWtlZFB0ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCShyZXZpc2lvbiAw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2Vy
LmgiCisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJp
dmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBh
bmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgorCitURVNUKFdURl9OYWtlZFB0ciwgQmFzaWMp
Cit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBOYWtlZFB0cjxSZWZMb2dn
ZXI+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
TmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIu
Z2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAg
ICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQdHI8
UmVmTG9nZ2VyPiBwMiA9IFdURjo6bW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFrZWRQdHI8
UmVmTG9nZ2VyPiBwMihXVEY6Om1vdmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5n
ZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgTmFr
ZWRQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBOYWtlZFB0
cjxSZWZMb2dnZXI+IHAyID0gV1RGOjptb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX05ha2VkUHRyLCBB
c3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dl
ciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAg
IE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+
IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAg
ICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOwor
ICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBw
MSA9IFdURjo6bW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE5h
a2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9n
Z2VyPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBOYWtlZFB0
cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dlcj4g
cDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gV1RGOjptb3ZlKHAyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
TmFrZWRQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5n
ZXQoKSk7CisgICAgICAgIHB0ciA9IFdURjo6bW92ZShwdHIpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci5nZXQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9OYWtlZFB0ciwgU3dhcCkKK3sK
KyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7Cisg
ICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBOYWtlZFB0cjxSZWZM
b2dnZXI+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHN0
ZDo6c3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorfQorCitOYWtlZFB0cjxSZWZMb2dn
ZXI+IG5ha2VkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBOYWtlZFB0
cjxSZWZMb2dnZXI+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9OYWtlZFB0ciwgUmV0dXJuVmFs
dWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1
dG8gcHRyID0gbmFrZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5u
YW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>