<?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>52981</bug_id>
          
          <creation_ts>2011-01-23 12:31:53 -0800</creation_ts>
          <short_desc>REGRESSION (r72895): console.trace crashes</short_desc>
          <delta_ts>2011-01-25 09:05:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>caseq</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338727</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-23 12:31:53 -0800</bug_when>
    <thetext>callStack becomes null when passed to addMessage(), so calling callStack-&gt;size() just crashes.

PassRefPtr should not be used here at all - it&apos;s only needed as an optimization when passing ownership. So, neither trace() nor addMessage() should take a PassRefPtr&lt;ScriptCallStack&gt;, they should just take ScriptCallStack*. Of course, this also applies to PassRefPtr&lt;ScriptArguments&gt; arguments and many other functions in this file, even though they don&apos;t crash right now.

Why don&apos;t we have any tests for console.trace at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338729</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-23 12:32:38 -0800</bug_when>
    <thetext>Please see &lt;http://webkit.org/coding/RefPtr.html&gt; for information on using RefPtr and PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338730</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-23 12:33:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/8905076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338869</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-24 00:00:22 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; 
&gt; Why don&apos;t we have any tests for console.trace at all?

There are at lest two tests for console.trace:

LayoutTests/inspector/console-trace.html
LayoutTests/inspector/console-trace-in-eval.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338900</commentid>
    <comment_count>4</comment_count>
      <attachid>79902</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-24 02:00:51 -0800</bug_when>
    <thetext>Created attachment 79902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338902</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 02:04:22 -0800</bug_when>
    <thetext>Attachment 79902 did not pass style-queue:

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

Source/WebCore/inspector/InspectorDatabaseInstrumentation.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338910</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-24 02:23:23 -0800</bug_when>
    <thetext>Committed r76493: &lt;http://trac.webkit.org/changeset/76493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338913</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-24 02:24:04 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Committed r76493: &lt;http://trac.webkit.org/changeset/76493&gt;

Style errors were fixed before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339035</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-24 08:39:27 -0800</bug_when>
    <thetext>-void Console::trace(PassRefPtr&lt;ScriptArguments&gt; arguments, PassRefPtr&lt;ScriptCallStack&gt; callStack)
+void Console::trace(PassRefPtr&lt;ScriptArguments&gt; arguments, PassRefPtr&lt;ScriptCallStack&gt; prpCallStack)

This patch is wrong. Argument types should be ScriptArguments* and ScriptCallStack*.

&gt; There are at lest two tests for console.trace:

How come these don&apos;t crash, are they disabled on most platforms? And if these didn&apos;t crash somehow, what regression test covers this fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339556</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-25 02:28:13 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; -void Console::trace(PassRefPtr&lt;ScriptArguments&gt; arguments, PassRefPtr&lt;ScriptCallStack&gt; callStack)
&gt; +void Console::trace(PassRefPtr&lt;ScriptArguments&gt; arguments, PassRefPtr&lt;ScriptCallStack&gt; prpCallStack)
&gt; 
&gt; This patch is wrong. Argument types should be ScriptArguments* and ScriptCallStack*.
&gt; 
I disagree with you here. Console::trace passes both callStack and arguments to addMessage which is supposed to create a console message with RefPtrs to these objects.  This code follows the following recommedation from http://webkit.org/coding/RefPtr.html:

&quot; If a function does take ownership of an object, the argument should be a PassRefPtr. This includes most setter functions. Unless the use of the argument is very simple, the argument should be transferred to a RefPtr at the start of the function; the argument can be named with a “prp” prefix in such cases. &quot;


&gt; &gt; There are at lest two tests for console.trace:
&gt; 
&gt; How come these don&apos;t crash, are they disabled on most platforms? And if these didn&apos;t crash somehow, what regression test covers this fix?

The code that lead to the crashes you described is guarded with Console::shouldPrintExceptions() which is only set from WebKit/mac/Misc/WebCoreStatistics.mm and hence is never executed in layout tests. We should consider moving the code that prints messages to console to the WebKit layer instead of calling printf from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339666</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-25 09:05:25 -0800</bug_when>
    <thetext>&gt; I disagree with you here.

There is a very simple and practical explanation of why your reading is wrong. By following it, you introduced a crasher.  That wouldn&apos;t have happened if you followed a common PassRepPtr usage pattern.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79902</attachid>
            <date>2011-01-24 02:00:51 -0800</date>
            <delta_ts>2011-01-24 02:04:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52981-20110124130048.patch</filename>
            <type>text/plain</type>
            <size>40767</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMjQ0NTJiYWEzZWI0YTI2NmQ4MGM2YmE4MGUxMmFkODQ3YTljZThiLi4z
NjNjYzZmZDYzNDcxMTZiMDRmYzc3YmQxNjIyMzJjZDYwMzkyNDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTMgQEAKKzIwMTEtMDEtMjQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UkVHUkVTU0lPTiAocjcyODk1KTogY29uc29sZS50cmFjZSBjcmFzaGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk4MQorCisgICAgICAgIC0gVXNl
IGxvY2FsIFJlZlB0ciB2YXJpYWJsZSBmb3IgYWNjZXNzaW5nIFBhc3NSZWZQdHIgYXJndW1lbnRz
IHRvIG1ha2Ugc3VyZSB0aGUgUGFzc1JlZlB0ciBoYXMKKyAgICAgICAgbm9uLW51bGwgdmFsdWUu
CisgICAgICAgIC0gVXNlIFBhc3NSZWZQdHIgZm9yIG9iamVjdHMgd2hvcyBvd25lcnNoaXAgaXMg
cGFzc2VkIHRvIHRoZSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
SW5zdHJ1bWVudGF0aW9uLmg6IEFkZGVkLiBFeHRyYWN0IGlubGluZSBtZXRob2RzIGNhbGxlZCBm
cm9tIHRoZSBjb25zb2xlIGludG8gdGhlaXIKKyAgICAgICAgb3duIGhlYWRlciB0byByZWR1Y2Ug
Y29tcGlsYXRpb24gdGltZSBvZiBvdGhlciBjbGFzc2VzIHRoYXQgZGVwZW5kIG9uIHRoZSBpbnNw
ZWN0b3IgaW5zdHJ1bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlTWFya1RpbWVs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3Rh
cnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlv
bi5oOiBBZGRlZC4gRXh0cmFjdCBpbmxpbmUgbWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZGF0YW5h
c2UgY29kZSBpbnRvIHRoZWlyCisgICAgICAgIG93biBoZWFkZXIgdG8gcmVkdWNlIGNvbXBpbGF0
aW9uIHRpbWUgb2Ygb3RoZXIgY2xhc3NlcyB0aGF0IGRlcGVuZCBvbiB0aGUgaW5zcGVjdG9yIGlu
c3RydW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9m
aWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE9wZW5EYXRhYmFzZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOiB1c2UgUmVmUHRyIGxvY2Fs
IHZhcmlhYmxlIGluc3RlYWQgb2YgYWNjZXNzaW5nIFBhc3NSZWZQdHIgYXJndW1lbnQgZGlyZWN0
bHkuCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnNvbGU6OnRyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OnRpbWVFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z3JvdXApOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6Z3JvdXBDb2xsYXBzZWQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisK
IDIwMTEtMDEtMjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA3
YWFjMGM3YmFjZDQzYzg2YTcwYWY3OGJjNTBjZTA0MjA4NzkxNWU2Li4zYmQ5ZTk3MjQwMzgwYTAw
MGUzZjc5NjNjYzI4MGY1ZTRhN2IyMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTk2Mywx
MCArMTk2MywxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUlu
c3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzE5OGJkZWYyODVkYjZmNDg0
YzM4NDBlMGZiMTg4MGI4NWJhNDNkNy4uZTI1ZGZlZjIzNjgzOWU3NjhmMDAwOGI1YzY0OGY4OWQ3
NmEzZGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAxNiwxMiArMjAxNiwxNCBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3YzIw
MDc3YjE4Yzc4MzlhY2IyMTU3ZWRlZjA1NDQwODY1NWQzNmEwLi5mNTUwZWNhNGVlNmRjOWIxYTRm
ZTgwZjU3YmMzMjI0MDRkNGI3ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTk0NSw5ICsxOTQ1LDEx
IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBcCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggXAorICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1NjkwMDA4
ZDk5ODI5NWI2OWIzNjcwOTg4Njk4Njk4ZjNmZjNjYjMyLi5jNTU4ZDhlMWMxYmZkZTkzN2MyM2Fh
NjMzYjQ4NGNmMDhlZTRhZTcyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNjUxMTQsNiArNjUxMTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNvbnNv
bGVJbnN0cnVtZW50YXRpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KQEAgLTY1MTM4LDYgKzY1MTQyLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEYXRhYmFz
ZUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAiCiAJ
CQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhhYzk0YjU5NjlkMWY0ZTgyNTMwMzlmZDBlNmJjMjk5NzNl
MWVhZDguLmRjNDIzZDFiMjU5Y2M5MzM3NzY4MDI5NzNjMDI4ZmY3ZDVhMjNlMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkz
MSw2ICs5MzEsNyBAQAogCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29s
ZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRjA2MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovOyB9OwogCQk0
MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxOEQwRjVGMDY5ODAwQTA3
RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLzsgfTsKKwkJRjNGNUNGMTMxMkVEODFCMzAwODRD
NTY5IC8qIEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Y1Q0YxMjEyRUQ4MUIzMDA4NEM1Njkg
LyogSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJNDFGMDYyMTQw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjA2MjE1MEY1
RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEzMEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNDFGMDY2RTQw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01NjEzLDYgKzU2MTQsNyBAQAogCQlFREVDOTgwMzBBRUQ3RTE3MDA1OTEzN0YgLyogV2Vi
Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLzsgfTsKIAkJ
RjMzMzVCRjgxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzMzNUJGNjEyRTA3
REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCAqLzsgfTsKIAkJRjMzMzVC
RjkxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMzMzVCRjcxMkUwN0RDMzAwRDMz
MDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oICovOyB9OworCQlGM0Y1Q0YxMTEyRUQ4MUE4
MDA4NEM1NjkgLyogSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNGNUNGMTAxMkVEODFBODAwODRD
NTY5IC8qIEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJRjMzRjAy
ODIxMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8q
IFNjcmlwdFByb2ZpbGUuY3BwICovOyB9OwogCQlGMzNGMDUzRDEyMEIwREE1MDBFNTc0M0EgLyog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgKi87IH07CiAJCUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGMzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oICovOyB9OwpAQCAtODEwOSw2ICs4MTExLDcgQEAKIAkJN0FBMzY1RUQxMkU3MjY1NDAw
RENBMjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FC
MEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0Y1Q0YxMjEyRUQ4MUIzMDA4NEM1NjkgLyogSW5z
cGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUYxMUE1OTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTk3Niw2ICsxMTk3OSw3IEBACiAJCUVERUM5
ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwogCQlGMzMzNUJGNjEyRTA3REMzMDBEMzMw
MTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUYzMzM1QkY3MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xl
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29uc29s
ZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzRjVDRjEwMTJFRDgxQTgw
MDg0QzU2OSAvKiBJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8q
IFNjcmlwdFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzM0YwNTNC
MTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjk4MiwxMiArMTI5ODYsMTQgQEAKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyog
SW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIElu
c3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgKi8sCiAJCQkJRjMzMzVCRjcxMkUwN0RDMzAwRDMzMDEx
IC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oICovLAorCQkJCUYzRjVDRjEwMTJFRDgxQTgwMDg0
QzU2OSAvKiBJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJMUM4MUI5
NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovLAogCQkJCTFD
ODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8sCiAJCQkJ
ODJBQjE3NDExMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCAqLywKIAkJ
CQk4MkFCMTc0MjEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCAqLywKIAkJ
CQk3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAg
Ki8sCiAJCQkJN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQuaCAqLywKKwkJCQlGM0Y1Q0YxMjEyRUQ4MUIzMDA4NEM1NjkgLyogSW5zcGVjdG9yRGF0YWJh
c2VJbnN0cnVtZW50YXRpb24uaCAqLywKIAkJCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNDFGMDYyMTIwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLywKIAkJCQlGMzNGMDUzQjEy
MEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi8sCkBAIC0yMDg5
NSw5ICsyMDkwMSwxMSBAQAogCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0
b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3
MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMz
MzVCRjkxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRjNGNUNGMTExMkVEODFBODAwODRDNTY5IC8qIEluc3BlY3RvckNvbnNvbGVJ
bnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOTVBMEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MkFCMTc0
NDEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGM0Y1Q0YxMzEyRUQ4MUIzMDA4NEM1NjkgLyogSW5zcGVjdG9y
RGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjE0MEY1
RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGMzNGMDUzRTEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3Bl
Y3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgzMjY3NDEwZGVlZWRkNWJkNzg5MmY3N2Q3MzY5NDE0MTM2MWJhZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1l
bnRhdGlvbi5oCkBAIC0wLDAgKzEsMTI3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
KgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aWZuZGVmIEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb25faAorI2RlZmluZSBJbnNwZWN0
b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uX2gKKworI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNz
YWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCisg
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckFnZW50LCBzb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisjZW5kaWYKK30KKwor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xl
KFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
IGlmIChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBh
Z2UocGFnZSkpCisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckFnZW50
LCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
Q291bnQoUGFnZSogcGFnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrKQoreworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50Rm9yUGFnZShwYWdlKSkKKyAgICAgICAgY29uc29sZUNvdW50SW1wbChpbnNwZWN0b3JBZ2Vu
dCwgYXJndW1lbnRzLCBzdGFjayk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JB
Z2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCisgICAg
ICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zcGVjdG9yQWdlbnQsIHRpdGxlKTsKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xl
VGltaW5nKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBzdGFjaykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNw
ZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkp
CisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChpbnNwZWN0b3JBZ2VudCwgdGl0bGUsIHN0
YWNrKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvbnNvbGVNYXJrVGltZWxpbmUoUGFnZSogcGFnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudFdpdGhGcm9udGVuZEZvclBh
Z2UocGFnZSkpCisgICAgICAgIGNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKGluc3BlY3RvckFnZW50
LCBhcmd1bWVudHMpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9maWxp
bmdNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3Bl
Y3RvckFnZW50Rm9yUGFnZShwYWdlKSkKKyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlSW1wbChpbnNwZWN0b3JBZ2VudCwgdGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRQcm9maWxlKFBhZ2UqIHBhZ2UsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlLCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQoreworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50Rm9yUGFnZShwYWdlKSkKKyAgICAgICAgYWRkUHJvZmlsZUltcGwoaW5zcGVjdG9yQWdlbnQs
IHByb2ZpbGUsIGNhbGxTdGFjayk7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwcm9maWxlckVuYWJsZWQoUGFnZSogcGFnZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCisgICAgICAgIHJldHVybiBwcm9maWxlckVuYWJs
ZWRJbXBsKGluc3BlY3RvckFnZW50KTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwor
aW5saW5lIFN0cmluZyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUoUGFnZSogcGFnZSwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Rm9yUGFnZShwYWdlKSkKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZUltcGwoaW5zcGVjdG9yQWdlbnQsIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpOworI2VuZGlm
CisgICAgcmV0dXJuICIiOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb25faCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3Ry
dW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
SW5zdHJ1bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg1OGZmNjJhNjdhYjI2MDRlMzY3Yzg1NDQ2
YWE0ODIwYzNiM2Y1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9u
LgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVt
ZW50YXRpb25faAorI2RlZmluZSBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbl9oCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworI2lmIEVOQUJMRShEQVRBQkFTRSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkT3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCit7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zcGVjdG9y
QWdlbnRGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRPcGVuRGF0YWJhc2VJbXBsKGlu
c3BlY3RvckFnZW50LCBkYXRhYmFzZSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKKyNlbmRpZgor
fQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGQyODFi
NzU3ZTJhMTU3ZWEzYzJhNjM3Y2YyYjMyZGIwZjQ3M2RkNDAuLmM0NDliYTQzMzY2MjI3MWE1YjM4
MTQ4ZWMyZmJiNTU4ZDBjOWZhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01MTgsNyArNTE4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ28KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1M
KGVuZExpbmUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2Fn
ZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFNjcmlwdEFyZ3VtZW50cyogYXJndW1lbnRzLCBTY3JpcHRDYWxsU3Rh
Y2sqIGNhbGxTdGFjaykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFz
c1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBpbnNwZWN0b3JBZ2Vu
dC0+Y29uc29sZUFnZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQpAQCAtNTI4LDcgKzUyOCw3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJ
bnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yCiAgICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2Vu
dCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvbnNvbGVDb3VudEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBTY3JpcHRB
cmd1bWVudHMqIGFyZ3VtZW50cywgU2NyaXB0Q2FsbFN0YWNrKiBzdGFjaykKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1Jl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrKQogewogICAgIGluc3BlY3RvckFnZW50LT5jb25z
b2xlQWdlbnQoKS0+Y291bnQoYXJndW1lbnRzLCBzdGFjayk7CiB9CkBAIC01MzgsMTIgKzUzOCwx
MiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nSW1w
bChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQQogICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xl
QWdlbnQoKS0+c3RhcnRUaW1pbmcodGl0bGUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBzdGFjaykKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gc3RhY2spCiB7CiAgICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2Vu
dCgpLT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlTWFya1RpbWVsaW5lSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVj
dG9yQWdlbnQsIFNjcmlwdEFyZ3VtZW50cyogYXJndW1lbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsKICAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChpbnNwZWN0b3JBZ2VudCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CkBA
IC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0
UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQWcKICAgICAgICAgcHJvZmls
ZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
UHJvZmlsZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBSZWZQdHI8U2NyaXB0
UHJvZmlsZT4gcHJvZmlsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3Bl
Y3RvckFnZW50LCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5wcm9maWxlckFnZW50KCkpIHsKICAg
ICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgw
KTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBTdHJpbmcgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpn
ZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbChJbnNwZWN0bwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREFUQUJBU0UpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
T3BlbkRhdGFiYXNlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIERhdGFiYXNl
KiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9w
ZW5EYXRhYmFzZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBQYXNzUmVmUHRy
PERhdGFiYXNlPiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewogICAgIGluc3BlY3RvckFnZW50LT5kaWRP
cGVuRGF0YWJhc2UoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggYzFkMjViMDU0M2IzNzMxZWQ1ZjgwZGEwYzJjNGQxMzNjYmU3MTJlOC4uNDMwMzQxYmRkODkw
MWZjNWI0ZDVjMmIwNThmZmI0NDc4N2Y1MTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTMxLDIyICsxMzEsMjIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bFdyaXRlSFRNTChEb2N1bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBz
dGFydExpbmUpOwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNjcmlwdEFyZ3VtZW50
cyosIFNjcmlwdENhbGxTdGFjayopOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoUGFnZSosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4pOwogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
UGFnZSosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJik7Ci0gICAg
c3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UqLCBTY3JpcHRBcmd1bWVudHMqLCBTY3JpcHRD
YWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoUGFnZSosIFBhc3NSZWZQ
dHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICBz
dGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwotICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFBhZ2UqLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICBzdGF0aWMgdm9pZCBjb25zb2xlTWFya1Rp
bWVsaW5lKFBhZ2UqLCBTY3JpcHRBcmd1bWVudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wQ29u
c29sZVRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+KTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlTWFya1RpbWVsaW5lKFBhZ2UqLCBQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgc3RhdGljIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xl
KFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgc3RhdGljIHZvaWQgYWRkUHJvZmlsZShQYWdlKiwgUmVm
UHRyPFNjcmlwdFByb2ZpbGU+LCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRQcm9maWxlKFBhZ2UqLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CiAgICAgc3RhdGljIGJvb2wgcHJvZmlsZXJFbmFibGVkKFBhZ2UqKTsKICAg
ICBzdGF0aWMgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoUGFnZSos
IGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlcik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRB
QkFTRSkKLSAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIERhdGFiYXNlKiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2U+LCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCkBAIC0yNDMsMjIgKzI0MywyMiBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQWdlbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNp
Z25lZCBpbnQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5l
KTsKIAotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckFn
ZW50KiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBTY3JpcHRBcmd1bWVudHMqLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBz
dGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnNwZWN0b3JBZ2VudCosIE1lc3Nh
Z2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4pOwogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckFn
ZW50KiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlE
KTsKLSAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRJbXBsKEluc3BlY3RvckFnZW50KiwgU2Ny
aXB0QXJndW1lbnRzKiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgc3RhdGljIHZvaWQgY29uc29s
ZUNvdW50SW1wbChJbnNwZWN0b3JBZ2VudCosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNv
bGVUaW1pbmdJbXBsKEluc3BlY3RvckFnZW50KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAg
c3RhdGljIHZvaWQgc3RvcENvbnNvbGVUaW1pbmdJbXBsKEluc3BlY3RvckFnZW50KiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgc3RhdGljIHZvaWQgY29uc29s
ZU1hcmtUaW1lbGluZUltcGwoSW5zcGVjdG9yQWdlbnQqLCBTY3JpcHRBcmd1bWVudHMqKTsKKyAg
ICBzdGF0aWMgdm9pZCBzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zcGVjdG9yQWdlbnQqLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHN0YXRp
YyB2b2lkIGNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKEluc3BlY3RvckFnZW50KiwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+KTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5z
cGVjdG9yQWdlbnQqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgc3RhdGljIHZvaWQgYWRkUHJvZmlsZUltcGwo
SW5zcGVjdG9yQWdlbnQqLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIFNjcmlwdENhbGxTdGFjayop
OworICAgIHN0YXRpYyB2b2lkIGFkZFByb2ZpbGVJbXBsKEluc3BlY3RvckFnZW50KiwgUmVmUHRy
PFNjcmlwdFByb2ZpbGU+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogICAgIHN0YXRp
YyBib29sIHByb2ZpbGVyRW5hYmxlZEltcGwoSW5zcGVjdG9yQWdlbnQqKTsKICAgICBzdGF0aWMg
U3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckFn
ZW50KiwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERBVEFCQVNFKQotICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5EYXRhYmFzZUltcGwoSW5zcGVjdG9y
QWdlbnQqLCBEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFi
YXNlSW1wbChJbnNwZWN0b3JBZ2VudCosIFBhc3NSZWZQdHI8RGF0YWJhc2U+LCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCkBAIC03NDQsMTYgKzc0NCw2IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShEQVRBQkFTRSkK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Rm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAg
ZGlkT3BlbkRhdGFiYXNlSW1wbChpbnNwZWN0b3JBZ2VudCwgZGF0YWJhc2UsIGRvbWFpbiwgbmFt
ZSwgdmVyc2lvbik7Ci0jZW5kaWYKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdF
KQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVc2VET01TdG9yYWdl
KFBhZ2UqIHBhZ2UsIFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFn
ZSwgRnJhbWUqIGZyYW1lKQogewpAQCAtODM1LDkwICs4MjUsNiBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUq
IGZyYW1lKQogfQogI2VuZGlmCiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFNjcmlwdEFyZ3VtZW50cyogYXJndW1lbnRzLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aykKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JBZ2VudCogaW5z
cGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCi0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckFnZW50LCBzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2Us
IE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VJRCkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCi0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckFnZW50LCBzb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7Ci0jZW5kaWYKLX0KLQot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSog
cGFnZSwgU2NyaXB0QXJndW1lbnRzKiBhcmd1bWVudHMsIFNjcmlwdENhbGxTdGFjayogc3RhY2sp
Ci17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQWdlbnQqIGluc3Bl
Y3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnRGb3JQYWdlKHBhZ2UpKQotICAgICAgICBjb25zb2xl
Q291bnRJbXBsKGluc3BlY3RvckFnZW50LCBhcmd1bWVudHMsIHN0YWNrKTsKLSNlbmRpZgotfQot
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWlu
ZyhQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQotewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50Rm9yUGFnZShwYWdlKSkKLSAgICAgICAgc3RhcnRDb25zb2xlVGltaW5nSW1wbChpbnNwZWN0
b3JBZ2VudCwgdGl0bGUpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBzdGFjaykKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudEZv
clBhZ2UocGFnZSkpCi0gICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChpbnNwZWN0b3JBZ2Vu
dCwgdGl0bGUsIHN0YWNrKTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmUoUGFnZSogcGFnZSwgU2NyaXB0QXJndW1l
bnRzKiBhcmd1bWVudHMpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnRXaXRoRnJvbnRlbmRGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICBjb25zb2xlTWFya1RpbWVsaW5lSW1wbChpbnNwZWN0b3JBZ2Vu
dCwgYXJndW1lbnRzKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmls
aW5nTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnNw
ZWN0b3JBZ2VudEZvclBhZ2UocGFnZSkpCi0gICAgICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2Fn
ZVRvQ29uc29sZUltcGwoaW5zcGVjdG9yQWdlbnQsIHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkUHJvZmlsZShQYWdlKiBwYWdlLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSwgU2Ny
aXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBp
ZiAoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnRGb3JQYWdl
KHBhZ2UpKQotICAgICAgICBhZGRQcm9maWxlSW1wbChpbnNwZWN0b3JBZ2VudCwgcHJvZmlsZSwg
Y2FsbFN0YWNrKTsKLSNlbmRpZgotfQotCi1pbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnByb2ZpbGVyRW5hYmxlZChQYWdlKiBwYWdlKQotewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50Rm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0dXJuIHByb2ZpbGVyRW5hYmxlZEltcGwoaW5z
cGVjdG9yQWdlbnQpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUgU3Ry
aW5nIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZShQYWdlKiBwYWdlLCBib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCi17Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
ID0gaW5zcGVjdG9yQWdlbnRGb3JQYWdlKHBhZ2UpKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbChp
bnNwZWN0b3JBZ2VudCwgaW5jcmVtZW50UHJvZmlsZU51bWJlcik7Ci0jZW5kaWYKLSAgICByZXR1
cm4gIiI7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgSW5zcGVj
dG9yQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQWdlbnRGb3JDb250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAppbmRleCAwYzE5NDIxOTk0M2ViMzc3MzEwNzYyM2NiNThmOGFhYjIyZjMzNTAyLi5hMWI5
MmU5Mzk0MjgxZGIxNmU1N2YyMTc5ZmU3ZDFmOWZhZTRhYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
Q29uc29sZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZW1v
cnlJbmZvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxlCiAgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogCiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKHBh
Z2UsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIDAsIGNhbGxTdGFjay5nZXQoKSk7Cisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdl
LCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOwogICAgIGVsc2UK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKHBh
Z2UsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiAKQEAgLTE2MCw4ICsxNjAsMTEgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGUKICAgICBwcmlu
dGYoIiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBDb25zb2xlOjph
ZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2ssIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMpCit2b2lkIENvbnNvbGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4gcHJwQXJndW1lbnRzLCAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IHBycENhbGxTdGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50cykKIHsKKyAgICBSZWZQdHI8U2Ny
aXB0QXJndW1lbnRzPiBhcmd1bWVudHMgPSBwcnBBcmd1bWVudHM7CisgICAgUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrID0gcHJwQ2FsbFN0YWNrOworCiAgICAgUGFnZSogcGFnZSA9
IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw3
ICsxOTAsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBQYXNzUmVmUHRyPFNjcmlwdAogICAgIGlmIChhcmd1bWVudHMtPmdl
dEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVS
TCgpKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29s
ZShwYWdlLCBKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMu
Z2V0KCksIGNhbGxTdGFjay5nZXQoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKHBhZ2UsIEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAogdm9pZCBDb25zb2xlOjpkZWJ1ZyhQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQpAQCAtMjIyLDggKzIyNSw5IEBAIHZvaWQgQ29uc29sZTo6ZGly
eG1sKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2Ny
aXB0Q2FsCiAgICAgbG9nKGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xl
Ojp0cmFjZShQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjp0cmFjZShQYXNzUmVm
UHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gcHJwQ2FsbFN0YWNrKQogeworICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayA9IHBycENhbGxTdGFjazsKICAgICBhZGRNZXNzYWdlKFRyYWNlTWVzc2FnZVR5cGUsIExvZ01l
c3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUpOwogCiAgICAgaWYgKCFzaG91
bGRQcmludEV4Y2VwdGlvbnMoKSkKQEAgLTI0NiwxMiArMjUwLDEyIEBAIHZvaWQgQ29uc29sZTo6
YXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lCiAKIHZvaWQgQ29uc29sZTo6Y291bnQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChwYWdlKCksIGFyZ3Vt
ZW50cy5nZXQoKSwgY2FsbFN0YWNrLmdldCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVDb3VudChwYWdlKCksIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAogdm9p
ZCBDb25zb2xlOjptYXJrVGltZWxpbmUoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KQogewotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZShwYWdlKCksIGFyZ3VtZW50cy5nZXQoKSk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlTWFya1RpbWVsaW5lKHBhZ2Uo
KSwgYXJndW1lbnRzKTsKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAt
MjkwLDcgKzI5NCw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRp
dGxlLCBTY3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fcHJvZmlsZXMuYXBwZW5kKHByb2ZpbGUpOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkUHJvZmlsZShwYWdlLCBwcm9maWxlLCBjYWxsU3RhY2suZ2V0KCkpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZShwYWdlLCBwcm9maWxlLCBjYWxs
U3RhY2spOwogfQogCiAjZW5kaWYKQEAgLTMwMiwxNyArMzA2LDE3IEBAIHZvaWQgQ29uc29sZTo6
dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogCiB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RvcENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSwgY2FsbFN0YWNrLmdldCgpKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0
bGUsIGNhbGxTdGFjayk7CiB9CiAKIHZvaWQgQ29uc29sZTo6Z3JvdXAoUGFzc1JlZlB0cjxTY3Jp
cHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjaykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2UsIFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVz
c2FnZUxldmVsLCBTdHJpbmcoKSwgYXJndW1lbnRzLmdldCgpLCBjYWxsU3RhY2suZ2V0KCkpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCks
IEpTTWVzc2FnZVNvdXJjZSwgU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWws
IFN0cmluZygpLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKIHZvaWQgQ29uc29sZTo6Z3Jv
dXBDb2xsYXBzZWQoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1Jl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2UsIFN0
YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwg
YXJndW1lbnRzLmdldCgpLCBjYWxsU3RhY2suZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgU3Rh
cnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBh
cmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKIHZvaWQgQ29uc29sZTo6Z3JvdXBFbmQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAppbmRleCA4ZWY3ODBlM2EyMDYwY2NkZjU5ZjM1YjIw
M2U3YmM0NmExZDMzNTM5Li43NWY2MTZhOTcyZDY3MzljOTIzMTA4ODM0OTg0YzU1OTMyNDNmZWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTEwNyw3ICsxMDcsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6
b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbgogCiAgICAg
Y29udGV4dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UuZ2V0KCksIGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFz
ZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNp
b24pOwogCiAgICAgLy8gSWYgaXQncyBhIG5ldyBkYXRhYmFzZSBhbmQgYSBjcmVhdGlvbiBjYWxs
YmFjayB3YXMgcHJvdmlkZWQsIHJlc2V0IHRoZSBleHBlY3RlZAogICAgIC8vIHZlcnNpb24gdG8g
IiIgYW5kIHNjaGVkdWxlIHRoZSBjcmVhdGlvbiBjYWxsYmFjay4gQmVjYXVzZSBvZiBzb21lIHN1
YnRsZSBTdHJpbmcK
</data>
<flag name="review"
          id="71360"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>