<?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>103584</bug_id>
          
          <creation_ts>2012-11-28 17:43:08 -0800</creation_ts>
          <short_desc>SpeculatedType dumping should not use the static char buffer[thingy] idiom</short_desc>
          <delta_ts>2012-11-28 22:03:02 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778544</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-28 17:43:08 -0800</bug_when>
    <thetext>Instead it should have an appropriate dump(PrintStream&amp;) method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778565</commentid>
    <comment_count>1</comment_count>
      <attachid>176619</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-28 18:02:16 -0800</bug_when>
    <thetext>Created attachment 176619
the patch

I still need to play with the other build systems, but other than that it&apos;s ready to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778571</commentid>
    <comment_count>2</comment_count>
      <attachid>176619</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-28 18:11:07 -0800</bug_when>
    <thetext>Comment on attachment 176619
the patch

Attachment 176619 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15010732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778573</commentid>
    <comment_count>3</comment_count>
      <attachid>176619</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-28 18:13:38 -0800</bug_when>
    <thetext>Comment on attachment 176619
the patch

Attachment 176619 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15015675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778582</commentid>
    <comment_count>4</comment_count>
      <attachid>176619</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-11-28 18:20:11 -0800</bug_when>
    <thetext>Comment on attachment 176619
the patch

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

r+.  Please update the change logs removing the extraneous namespace entries.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        (JSC):

Remove the (JSC): only lines that the tools shouldn&apos;t put in.

&gt; Source/JavaScriptCore/ChangeLog:26
&gt; +        (WTF):

Same here.

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +        (DFG):

Ditto.

&gt; Source/WTF/ChangeLog:13
&gt; +        (WTF):

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778596</commentid>
    <comment_count>5</comment_count>
      <attachid>176623</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-28 18:34:52 -0800</bug_when>
    <thetext>Created attachment 176623
patch for landing

I will wait for EWS to land because I&apos;m worried about vsnprintf and va_copy not being available on some platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778600</commentid>
    <comment_count>6</comment_count>
      <attachid>176623</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-28 18:49:14 -0800</bug_when>
    <thetext>Comment on attachment 176623
patch for landing

Attachment 176623 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15044095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778601</commentid>
    <comment_count>7</comment_count>
      <attachid>176623</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-28 18:51:26 -0800</bug_when>
    <thetext>Comment on attachment 176623
patch for landing

Attachment 176623 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15029586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778602</commentid>
    <comment_count>8</comment_count>
      <attachid>176623</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 18:53:46 -0800</bug_when>
    <thetext>Comment on attachment 176623
patch for landing

Attachment 176623 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15023643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778611</commentid>
    <comment_count>9</comment_count>
      <attachid>176623</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-28 19:26:52 -0800</bug_when>
    <thetext>Comment on attachment 176623
patch for landing

Attachment 176623 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15018673</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778628</commentid>
    <comment_count>10</comment_count>
      <attachid>176632</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-28 20:27:53 -0800</bug_when>
    <thetext>Created attachment 176632
patch for landing

Trying again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778689</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-28 22:03:02 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/136096</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176619</attachid>
            <date>2012-11-28 18:02:16 -0800</date>
            <delta_ts>2012-11-28 18:34:52 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>spectype.patch</filename>
            <type>text/plain</type>
            <size>42427</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MDc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVm
ZmVyW3RoaW5neV0gaWRpb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZWQgU3BlY3VsYXRlZFR5cGUgdG8gYmUgImR1bXBhYmxlIiBieSBzYXlp
bmcgdGhpbmdzIGxpa2U6CisgICAgICAgIAorICAgICAgICBkYXRhTG9nKCJ0aGluZ3kgPSAiLCBT
cGVjdWxhdGlvbkR1bXAodGhpbmd5KSkKKyAgICAgICAgCisgICAgICAgIFJlbW92ZWQgdGhlIG9s
ZCBzdHJpbmdpZmljYXRpb24gZnVuY3Rpb25zLCBhbmQgY2hhbmdlZCBhbGwgY29kZSB0aGF0IHJl
ZmVycmVkIHRvIHRoZW0KKyAgICAgICAgdG8gdXNlIHRoZSBuZXcgZGF0YUxvZygpL3ByaW50KCkg
c3R5bGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNwZWN1
bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyk6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlv
bkFiYnJldmlhdGVkKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmluamVjdExhenlPcGVyYW5k
U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVk
aWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAg
ICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAoR3JhcGgpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nl
c3NEYXRhRHVtcDo6VmFyaWFibGVBY2Nlc3NEYXRhRHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6
VmFyaWFibGVBY2Nlc3NEYXRhRHVtcDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAoVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcCk6CisKIDIwMTItMTEtMjggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5aW5nIHBoYXNlIHNob3VsZCB1c2Ugd29y
ayBsaXN0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNjA2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDggQEAKIAkJMEZEODJF
NTYxNDFEQUYwODAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBE
RkdPU1JFbnRyeS5jcHAgKi87IH07CiAJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdP
U1JFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJFODYxNDFGM0ZGMTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5jcHAgKi87IH07CisJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRERCRkIyMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmNwcCAqLzsgfTsKKwkJMEZEREJGQjYxNjY2RUVEQTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBP
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4
IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkVCM0VDRDE2MjM3RjREMDBBQjY3QUQgLyogVHlw
ZWRBcnJheURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MDM0LDYgKzEwMzYsOCBAQAogCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50cnku
Y3BwOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5Lmg7IHBhdGggPSBkZmcvREZHT1NS
RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODJFODQxNDFGM0ZEQTAw
MTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNwZWN1bGF0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZEREJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5jcHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAv
KiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVB
MTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5RGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ2NCw2ICsyNDY4LDggQEAKIAkJCQkwRjJCREM0RTE1
MjI4QkU3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuY3BwICovLAogCQkJCTBGMkJEQzQwMTUy
MjgwMTcwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5oICovLAogCQkJCTBGNjIwMTcyMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLywKKwkJCQkwRkREQkZCMjE2
NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgKi8sCisJCQkJ
MEZEREJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAq
LywKIAkJCQkwRjJCREM1MDE1MjI4RkZBMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAg
Ki8sCiAJCQkJMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCAq
LywKIAkJCQkwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAgKi8sCkBAIC0zMDM5LDYgKzMwNDUsNyBAQAogCQkJCUE3N0YxODI1MTY0MTkyQzcwMDY0
MEE0NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkx
RjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3M0Q3
QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGFEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM2MjEsNiArMzYyOCw3IEBACiAJCQkJMEZBRjdF
RkQxNjVCQTkxQjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNz
ZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAv
KiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShy
ZXZpc2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNDQgKzM0LDE0MyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3
dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9TdHJp
bmcoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVh
bSYgb3V0LCBTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gU3BlY05v
bmUpCi0gICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgaWYgKHZhbHVlID09IFNwZWNOb25lKSB7
CisgICAgICAgIG91dC5wcmludCgiTm9uZSIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IAotICAgIHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9IDI1NjsKLSAgICBzdGF0aWMgY2hhciBkZXNj
cmlwdGlvbltzaXplXTsKLSAgICBCb3VuZHNDaGVja2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3Jp
cHRpb24sIHNpemUpOworICAgIFN0cmluZ1ByaW50U3RyZWFtIG15T3V0OwogICAgIAogICAgIGJv
b2wgaXNUb3AgPSB0cnVlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNDZWxsT3RoZXIpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOworICAgICAgICBteU91dC5wcmludCgiT3Ro
ZXJjZWxsIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlm
ICh2YWx1ZSAmIFNwZWNPYmplY3RPdGhlcikKLSAgICAgICAgcHRyLnN0cmNhdCgiT3RoZXJvYmoi
KTsKKyAgICAgICAgbXlPdXQucHJpbnQoIk90aGVyb2JqIik7CiAgICAgZWxzZQogICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNGaW5hbE9iamVjdCkKLSAg
ICAgICAgcHRyLnN0cmNhdCgiRmluYWwiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkZpbmFsIik7
CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogCiAgICAgaWYgKHZhbHVlICYgU3Bl
Y0FycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJBcnJheSIpOworICAgICAgICBteU91dC5wcmlu
dCgiQXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKHZhbHVlICYgU3BlY0ludDhBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiSW50OGFycmF5
Iik7CisgICAgICAgIG15T3V0LnByaW50KCJJbnQ4YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAg
IGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ludDE2QXJyYXkpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIkludDE2YXJyYXkiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIklu
dDE2YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKHZhbHVlICYgU3BlY0ludDMyQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkludDMyYXJy
YXkiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDMyYXJyYXkiKTsKICAgICBlbHNlCiAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY1VpbnQ4QXJyYXkp
Ci0gICAgICAgIHB0ci5zdHJjYXQoIlVpbnQ4YXJyYXkiKTsKKyAgICAgICAgbXlPdXQucHJpbnQo
IlVpbnQ4YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAKICAgICBp
ZiAodmFsdWUgJiBTcGVjVWludDhDbGFtcGVkQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIlVp
bnQ4Y2xhbXBlZGFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJVaW50OGNsYW1wZWRhcnJh
eSIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFs
dWUgJiBTcGVjVWludDE2QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIlVpbnQxNmFycmF5Iik7
CisgICAgICAgIG15T3V0LnByaW50KCJVaW50MTZhcnJheSIpOwogICAgIGVsc2UKICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjVWludDMyQXJyYXkpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIlVpbnQzMmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJV
aW50MzJhcnJheSIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAg
ICBpZiAodmFsdWUgJiBTcGVjRmxvYXQzMkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJGbG9h
dDMyYXJyYXkiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkZsb2F0MzJhcnJheSIpOwogICAgIGVs
c2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRmxv
YXQ2NEFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDY0YXJyYXkiKTsKKyAgICAgICAg
bXlPdXQucHJpbnQoIkZsb2F0NjRhcnJheSIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBm
YWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRnVuY3Rpb24pCi0gICAgICAgIHB0ci5z
dHJjYXQoIkZ1bmN0aW9uIik7CisgICAgICAgIG15T3V0LnByaW50KCJGdW5jdGlvbiIpOwogICAg
IGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVj
TXlBcmd1bWVudHMpCi0gICAgICAgIHB0ci5zdHJjYXQoIk15YXJndW1lbnRzIik7CisgICAgICAg
IG15T3V0LnByaW50KCJNeWFyZ3VtZW50cyIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBm
YWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRm9yZWlnbkFyZ3VtZW50cykKLSAgICAg
ICAgcHRyLnN0cmNhdCgiRm9yZWlnbmFyZ3VtZW50cyIpOworICAgICAgICBteU91dC5wcmludCgi
Rm9yZWlnbmFyZ3VtZW50cyIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAg
ICAKICAgICBpZiAodmFsdWUgJiBTcGVjU3RyaW5nKQotICAgICAgICBwdHIuc3RyY2F0KCJTdHJp
bmciKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIlN0cmluZyIpOwogICAgIGVsc2UKICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjSW50MzIpCi0gICAgICAg
IHB0ci5zdHJjYXQoIkludCIpOworICAgICAgICBteU91dC5wcmludCgiSW50Iik7CiAgICAgZWxz
ZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3Vi
bGVSZWFsKQotICAgICAgICBwdHIuc3RyY2F0KCJEb3VibGVyZWFsIik7CisgICAgICAgIG15T3V0
LnByaW50KCJEb3VibGVyZWFsIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwog
ICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVOYU4pCi0gICAgICAgIHB0ci5zdHJjYXQo
IkRvdWJsZW5hbiIpOworICAgICAgICBteU91dC5wcmludCgiRG91YmxlbmFuIik7CiAgICAgZWxz
ZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNCb29s
ZWFuKQotICAgICAgICBwdHIuc3RyY2F0KCJCb29sIik7CisgICAgICAgIG15T3V0LnByaW50KCJC
b29sIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2
YWx1ZSAmIFNwZWNPdGhlcikKLSAgICAgICAgcHRyLnN0cmNhdCgiT3RoZXIiKTsKKyAgICAgICAg
bXlPdXQucHJpbnQoIk90aGVyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwog
ICAgIAotICAgIGlmIChpc1RvcCkgewotICAgICAgICBwdHIgPSBkZXNjcmlwdGlvbjsKLSAgICAg
ICAgcHRyLnN0cmNhdCgiVG9wIik7Ci0gICAgfQorICAgIGlmIChpc1RvcCkKKyAgICAgICAgb3V0
LnByaW50KCJUb3AiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludChteU91dC50b0NTdHJp
bmcoKSk7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0VtcHR5KQotICAgICAgICBwdHIuc3Ry
Y2F0KCJFbXB0eSIpOwotICAgIAotICAgICpwdHIrKyA9IDA7Ci0gICAgCi0gICAgcmV0dXJuIGRl
c2NyaXB0aW9uOworICAgICAgICBvdXQucHJpbnQoIkVtcHR5Iik7CiB9CiAKLWNvbnN0IGNoYXIq
IHNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQorLy8gV2UgZG9uJ3QgZXhwb3NlIHRoaXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBy
ZWx5aW5nIG9uIHRoZSBmYWN0IHRoYXQgdGhpcyBtZXRob2QgY3VycmVudGx5CisvLyBqdXN0IHJl
dHVybnMgc3RyaW5nIGNvbnN0YW50cy4KK3N0YXRpYyBjb25zdCBjaGFyKiBzcGVjdWxhdGlvblRv
QWJicmV2aWF0ZWRTdHJpbmcoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAo
aXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxG
aW5hbD4iOwpAQCAtMjE4LDYgKzIxNywxMSBAQCBjb25zdCBjaGFyKiBzcGVjdWxhdGlvblRvQWJi
cmV2aWF0ZWRTdHJpCiAgICAgcmV0dXJuICIiOwogfQogCit2b2lkIGR1bXBTcGVjdWxhdGlvbkFi
YnJldmlhdGVkKFByaW50U3RyZWFtJiBvdXQsIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IG91dC5wcmludChzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcodmFsdWUpKTsKK30KKwog
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKQogewogICAgIGlmIChjbGFzc0luZm8gPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5m
bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oCShyZXZpc2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDggKzI4OSwxMSBAQCBp
bmxpbmUgYm9vbCBpc0VtcHR5U3BlY3VsYXRpb24oU3BlY3VsYXRlCiAgICAgcmV0dXJuIHZhbHVl
ID09IFNwZWNFbXB0eTsKIH0KIAotY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub1N0cmluZyhTcGVj
dWxhdGVkVHlwZSB2YWx1ZSk7Ci1jb25zdCBjaGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRT
dHJpbmcoU3BlY3VsYXRlZFR5cGUgdmFsdWUpOwordm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRT
dHJlYW0mLCBTcGVjdWxhdGVkVHlwZSk7Cit2b2lkIGR1bXBTcGVjdWxhdGlvbkFiYnJldmlhdGVk
KFByaW50U3RyZWFtJiwgU3BlY3VsYXRlZFR5cGUpOworCitNQUtFX1BSSU5UX0FEQVBUT1IoU3Bl
Y3VsYXRpb25EdW1wLCBTcGVjdWxhdGVkVHlwZSwgZHVtcFNwZWN1bGF0aW9uKTsKK01BS0VfUFJJ
TlRfQURBUFRPUihBYmJyZXZpYXRlZFNwZWN1bGF0aW9uRHVtcCwgU3BlY3VsYXRlZFR5cGUsIGR1
bXBTcGVjdWxhdGlvbkFiYnJldmlhdGVkKTsKIAogLy8gTWVyZ2UgdHdvIHByZWRpY3Rpb25zLiBO
b3RlIHRoYXQgY3VycmVudGx5IHRoaXMganVzdCBkb2VzIGxlZnQgfCByaWdodC4gSXQgbWF5CiAv
LyBzZWVtIHRlbXB0aW5nIHRvIGRvIHNvIGRpcmVjdGx5LCBidXQgeW91IHdvdWxkIGJlIGRvaW5n
IHNvIGF0IHlvdXIgb3duIHBlcmlsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
MTAgKzExMiw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICB7Ci0gICAgICAgIG91dC5wcmludGYoCi0gICAgICAg
ICAgICAic2FtcGxlcyA9ICV1LCBwcmVkaWN0aW9uID0gJXMiLAotICAgICAgICAgICAgdG90YWxO
dW1iZXJPZlNhbXBsZXMoKSwKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uVG9TdHJpbmcobV9wcmVk
aWN0aW9uKSk7CisgICAgICAgIG91dC5wcmludCgic2FtcGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZT
YW1wbGVzKCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24p
KTsKICAgICAgICAgb3V0LnByaW50ZigiLCB2YWx1ZSA9ICIpOwogICAgICAgICBpZiAobV9zaW5n
bGV0b25WYWx1ZUlzVG9wKQogICAgICAgICAgICAgb3V0LnByaW50ZigiVE9QIik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShy
ZXZpc2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVmly
dHVhbFJlZ2lzdGVyX2gKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsNCArMzgsMTMgQEAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFZpcnR1YWxSZWdpc3RlcikgPQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUpCit7CisgICAgb3V0LnBy
aW50KHN0YXRpY19jYXN0PGludD4odmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
ICNlbmRpZiAvLyBWaXJ0dWFsUmVnaXN0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzQsNyArMzc0LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgb3V0LnByaW50KAotICAgICAgICAg
ICAgIigiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksICIsICIsIGFycmF5TW9kZXNUb1N0
cmluZyhtX2FycmF5TW9kZXMpLCAiLCAiLAorICAgICAgICAgICAgIigiLCBTcGVjdWxhdGlvbkR1
bXAobV90eXBlKSwgIiwgIiwgYXJyYXlNb2Rlc1RvU3RyaW5nKG1fYXJyYXlNb2RlcyksICIsICIs
CiAgICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSwgIiwgIiwgbV9mdXR1cmVQb3Nz
aWJsZVN0cnVjdHVyZSk7CiAgICAgICAgIGlmICghIW1fdmFsdWUpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoIiwgIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKQEAgLTUzMiwxNSArNTMyLDYgQEAg
cHJpdmF0ZToKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCi1uYW1lc3BhY2UgV1RGIHsK
LQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZSYgdmFsdWUpCi17Ci0gICAgdmFsdWUuZHVtcChvdXQpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCiAjZW5k
aWYgLy8gREZHQWJzdHJhY3RWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2Nyw4ICsyNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9sYXp5T3BlcmFuZHMucHJlZGljdGlvbigKICAgICAgICAgICAgICAgICBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleShtX2N1cnJlbnRJbmRleCwgbm9kZS5sb2NhbCgpKSk7CiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiTGF6eSBvcGVyYW5kIFtA
JXUsIGJjIyV1LCByJWRdIHByZWRpY3Rpb246ICVzXG4iLAotICAgICAgICAgICAgICAgIG5vZGVJ
bmRleCwgbV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSwgc3BlY3VsYXRpb25Ub1N0cmluZyhw
cmVkaWN0aW9uKSk7CisgICAgICAgIGRhdGFMb2coIkxhenkgb3BlcmFuZCBbQCIsIG5vZGVJbmRl
eCwgIiwgYmMjIiwgbV9jdXJyZW50SW5kZXgsICIsIHIiLCBub2RlLmxvY2FsKCksICJdIHByZWRp
Y3Rpb246ICIsIFNwZWN1bGF0aW9uRHVtcChwcmVkaWN0aW9uKSwgIlxuIik7CiAjZW5kaWYKICAg
ICAgICAgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcmVkaWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuIG5vZGVJbmRleDsKQEAgLTg4Nyw3ICs4ODYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAg
ICAgZGF0YUxvZ0YoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2Rl
SW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHNwZWN1bGF0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwor
ICAgICAgICBkYXRhTG9nKCJEeW5hbWljIFtAIiwgbm9kZUluZGV4LCAiLCBiYyMiLCBieXRlY29k
ZUluZGV4LCAiXSBwcmVkaWN0aW9uOiAiLCBTcGVjdWxhdGlvbkR1bXAocHJlZGljdGlvbiksICJc
biIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICByZXR1cm4gcHJlZGljdGlvbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMzYwNjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKLSNpbmNsdWRlIDx3dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIuaD4KKyNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApA
QCAtNTcsNDQgKzU3LDYgQEAgY29uc3QgY2hhciAqR3JhcGg6Om9wTmFtZShOb2RlVHlwZSBvcCkK
ICAgICByZXR1cm4gZGZnT3BOYW1lc1tvcF07CiB9CiAKLWNvbnN0IGNoYXIqIEdyYXBoOjpuYW1l
T2ZWYXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0Rh
dGEpCi17Ci0gICAgLy8gVmFyaWFibGVzIGFyZSBhbHJlYWR5IG51bWJlcmVkLiBGb3IgcmVhZGFi
aWxpdHkgb2YgSVIgZHVtcHMsIHRoaXMgcmV0dXJucwotICAgIC8vIGFuIGFscGhhYmV0aWMgbmFt
ZSBmb3IgdGhlIHZhcmlhYmxlIGFjY2VzcyBkYXRhLCBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRv
Ci0gICAgLy8gcmVhc29uIGFib3V0IHR3byBudW1iZXJzICh2YXJpYWJsZSBudW1iZXIgYW5kIGxp
dmUgcmFuZ2UgbnVtYmVyKSwgYnV0IGluc3RlYWQKLSAgICAvLyBhIG51bWJlciBhbmQgYSBsZXR0
ZXIuCi0gICAgCi0gICAgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFibGVBY2Nl
c3NEYXRhLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICgmbV92YXJpYWJsZUFjY2Vzc0RhdGFb
aV0gPT0gdmFyaWFibGVBY2Nlc3NEYXRhKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoaW5kZXgg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICAKLSAgICBpZiAo
IWluZGV4KQotICAgICAgICByZXR1cm4gIkEiOwotCi0gICAgc3RhdGljIGNoYXIgYnVmWzEwMF07
Ci0gICAgQm91bmRzQ2hlY2tlZFBvaW50ZXI8Y2hhcj4gcHRyKGJ1Ziwgc2l6ZW9mKGJ1ZikpOwot
ICAgIAotICAgIHdoaWxlIChpbmRleCkgewotICAgICAgICAqcHRyKysgPSAnQScgKyAoaW5kZXgg
JSAyNik7Ci0gICAgICAgIGluZGV4IC89IDI2OwotICAgIH0KLSAgICAKLSAgICBpZiAodmFyaWFi
bGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCi0gICAgICAgICpwdHIrKyA9ICcqJzsKLSAgICAK
LSAgICBwdHIuc3RyY2F0KHNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyh2YXJpYWJsZUFj
Y2Vzc0RhdGEtPnByZWRpY3Rpb24oKSkpOwotICAgIAotICAgICpwdHIrKyA9IDA7Ci0gICAgCi0g
ICAgcmV0dXJuIGJ1ZjsKLX0KLQogc3RhdGljIHZvaWQgcHJpbnRXaGl0ZVNwYWNlKFByaW50U3Ry
ZWFtJiBvdXQsIHVuc2lnbmVkIGFtb3VudCkKIHsKICAgICB3aGlsZSAoYW1vdW50LS0gPiAwKQpA
QCAtMTUyLDggKzExNCw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRWRn
ZSAKICAgICBvdXQucHJpbnQoCiAgICAgICAgIHVzZUtpbmRUb1N0cmluZyhlZGdlLnVzZUtpbmQo
KSksCiAgICAgICAgICJAIiwgZWRnZS5pbmRleCgpLAotICAgICAgICBzcGVjdWxhdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoCi0gICAgICAgICAgICBhdChlZGdlKS5wcmVkaWN0aW9uKCkpKTsKKyAg
ICAgICAgQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAoYXQoZWRnZSkucHJlZGljdGlvbigpKSk7
CiB9CiAKIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4LCBOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtMjY0LDcgKzIyNSw3IEBAIHZvaWQgR3JhcGg6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICBpZiAobm9kZS5oYXNTdG9yYWdlQWNj
ZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhJiBzdG9yYWdlQWNjZXNzRGF0
YSA9IG1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS5zdG9yYWdlQWNjZXNzRGF0YUluZGV4KCldOwog
ICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgImlkIiwgc3RvcmFnZUFj
Y2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwgInsiLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKS5zdHJpbmcoKSwgIn0iKTsKLSAgICAg
ICAgb3V0LnByaW50KCIsICIsIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCk7CisgICAgICAgIG91
dC5wcmludCgiLCAiLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHN0b3JhZ2VBY2Nlc3NEYXRhLm9m
ZnNldCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUKG5v
ZGUuaGFzVmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS5oYXNMb2NhbCgpKTsKQEAgLTI3Miw5
ICsyMzMsOSBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJs
ZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgaW50IG9wZXJhbmQgPSB2YXJpYWJsZUFjY2Vzc0RhdGEt
Pm9wZXJhbmQoKTsKICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQotICAg
ICAgICAgICAgb3V0LnByaW50KGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsICJhcmciLCBvcGVyYW5k
VG9Bcmd1bWVudChvcGVyYW5kKSwgIigiLCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFi
bGVBY2Nlc3NEYXRhKSwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8g
IiwgIiA6ICIiLCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksICIoIiwgVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsICJy
Iiwgb3BlcmFuZCwgIigiLCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NE
YXRhKSwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIi
LCAiciIsIG9wZXJhbmQsICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFi
bGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQog
ICAgIGlmIChub2RlLmhhc0NvbnN0YW50QnVmZmVyKCkpIHsKQEAgLTMyMSw5ICsyODIsOSBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAKICAgICBpZiAoIXNraXBw
ZWQpIHsKICAgICAgICAgaWYgKG5vZGUuaGFzVmFyaWFibGVBY2Nlc3NEYXRhKCkpCi0gICAgICAg
ICAgICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSksIG5vZGUudmFyaWFibGVBY2Nlc3NE
YXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpID8gIiwgZm9yY2luZyBkb3VibGUiIDogIiIp
OworICAgICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1w
KG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSksIG5vZGUudmFyaWFibGVB
Y2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpID8gIiwgZm9yY2luZyBkb3VibGUi
IDogIiIpOwogICAgICAgICBlbHNlIGlmIChub2RlLmhhc0hlYXBQcmVkaWN0aW9uKCkpCi0gICAg
ICAgICAgICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG5v
ZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAgb3V0LnByaW50KCIgIHByZWRp
Y3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOwogICAg
IH0KICAgICAKICAgICBvdXQucHJpbnQoIlxuIik7CkBAIC00NTksNyArNDIwLDkgQEAgdm9pZCBH
cmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMoKQogICAgICAgICBhdChtX2FyZ3VtZW50c1thcmdd
KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKSk7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgZGF0YUxvZ0YoIkFyZ3VtZW50IFslenVdIHByZWRpY3Rpb246ICVzXG4iLCBhcmcsIHNw
ZWN1bGF0aW9uVG9TdHJpbmcoYXQobV9hcmd1bWVudHNbYXJnXSkudmFyaWFibGVBY2Nlc3NEYXRh
KCktPnByZWRpY3Rpb24oKSkpOworICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgIkFyZ3Vt
ZW50IFsiLCBhcmcsICJdIHByZWRpY3Rpb246ICIsCisgICAgICAgICAgICBTcGVjdWxhdGlvbkR1
bXAoYXQobV9hcmd1bWVudHNbYXJnXSkudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24o
KSksICJcbiIpOwogI2VuZGlmCiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsOSArMzI3LDYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2RlVHlwZSk7CiAgICAgCi0gICAgLy8g
VGhpcyBpcyBPKG4pLCBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdmVyYm9zZSBkdW1wcy4K
LSAgICBjb25zdCBjaGFyKiBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFibGVBY2Nlc3NE
YXRhKik7Ci0KICAgICB2b2lkIHByZWRpY3RBcmd1bWVudFR5cGVzKCk7CiAgICAgCiAgICAgU3Ry
dWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUFic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyMCwxNSArMzIwLDYgQEAgcHJpdmF0ZToKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
Ci1uYW1lc3BhY2UgV1RGIHsKLQotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgdmFsdWUpCi17
Ci0gICAgdmFsdWUuZHVtcChvdXQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQogCiAjZW5kaWYgLy8gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0
YUR1bXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKKworVmFyaWFibGVBY2Nlc3NEYXRhRHVtcDo6VmFyaWFibGVBY2Nlc3NEYXRh
RHVtcChHcmFwaCYgZ3JhcGgsIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YSkKKyAgICA6IG1fZ3Jh
cGgoZ3JhcGgpCisgICAgLCBtX2RhdGEoZGF0YSkKK3sKK30KKwordm9pZCBWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgdW5zaWduZWQg
aW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKCZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ldID09IG1f
ZGF0YSkgeworICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgQVNTRVJUKGluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgCisgICAgaWYgKCFpbmRleCkgeworICAgICAgICBv
dXQucHJpbnQoImEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlIChpbmRl
eCkgeworICAgICAgICBvdXQucHJpbnQoQ2hhcmFjdGVyRHVtcCgnQScgKyAoaW5kZXggJSAyNikp
KTsKKyAgICAgICAgaW5kZXggLz0gMjY7CisgICAgfQorICAgIAorICAgIGlmIChtX2RhdGEtPmlz
Q2FwdHVyZWQoKSkKKyAgICAgICAgb3V0LnByaW50KCIqIik7CisKKyAgICBvdXQucHJpbnQoQWJi
cmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAobV9kYXRhLT5wcmVkaWN0aW9uKCkpKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXBfaAorI2RlZmluZSBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGFEdW1wX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19K
SVQpCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKK2NsYXNzIFZhcmlhYmxlQWNjZXNzRGF0YTsK
KworY2xhc3MgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCB7CitwdWJsaWM6CisgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhRHVtcChHcmFwaCYsIFZhcmlhYmxlQWNjZXNzRGF0YSopOworICAgIAorICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEdyYXBoJiBtX2dy
YXBoOworICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbV9kYXRhOworfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wX2gKKwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjA3OSkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIw
MTItMTEtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVj
dWxhdGVkVHlwZSBkdW1waW5nIHNob3VsZCBub3QgdXNlIHRoZSBzdGF0aWMgY2hhciBidWZmZXJb
dGhpbmd5XSBpZGlvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSBTdHJpbmdQcmludFN0cmVhbSwgYW5kIG1hZGUgaXQgZWFzeSB0byBjcmVh
dGUgZHVtcGVycyBmb3IgdHlwZWRlZnMgdG8gcHJpbWl0aXZlcy4KKworICAgICAgICAqIFdURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9QcmludFN0cmVhbS5jcHA6
CisgICAgICAgIChXVEY6OmR1bXBDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGKToKKyAgICAgICAg
KiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6U3RyaW5nUHJpbnRTdHJlYW06OlN0cmluZ1By
aW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6U3RyaW5nUHJpbnRTdHJlYW06On5TdHJpbmdQcmlu
dFN0cmVhbSk6CisgICAgICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjp2cHJpbnRmKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nUHJpbnRTdHJlYW06OnRvQ1N0cmluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFzZVNpemUpOgorICAgICAgICAqIHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmdQcmlu
dFN0cmVhbSk6CisgICAgICAgIChXVEY6OnRvQ1N0cmluZyk6CisKIDIwMTItMTEtMjggIFJvZ2Vy
IEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIERhdGFMb2cgd29y
ay9jb21waWxlIHByb3Blcmx5IG9uIFdpbmRvd3MuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDgg
QEAKIAkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYzMTY1REJBNzMwMDVB
RDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87
IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJF
MDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CisJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRE
QkZBNTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkw
RkREQkZBODE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE2MTY2NkRGQTMwMEM1
NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovOyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBE
QjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07
CiAJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTE0
RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYzQjBGNjE1RTQ1RTQ2MDAy
MTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CkBAIC0zMjUsNiArMzI3LDggQEAKIAkJMEY5RDMzNUQxNjVEQkE3MzAwNUFE
Mzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMz
NUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEREJGQTYxNjY2REZBMzAw
QzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ1ByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJBTVNpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhdHVyYXRlZEFyaXRobWV0aWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNyw2ICs4NDEsOCBAQAogCQkJCUE4QTQ3
MzEyMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdFeHRyYXMuY3BwICovLAogCQkJCUE4QTQ3MzEz
MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzMxNDE1MUE4
MjVCMDA0MTIzRkYgLyogU3RyaW5nSGFzaGVyLmggKi8sCisJCQkJMEZEREJGQTUxNjY2REZBMzAw
QzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLywKKwkJCQkwRkREQkZBNjE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzMxNTE1MUE4MjVC
MDA0MTIzRkYgLyogVENQYWNrZWRDYWNoZS5oICovLAogCQkJCUE4QTQ3MzE2MTUxQTgyNUIwMDQx
MjNGRiAvKiBUQ1BhZ2VNYXAuaCAqLywKIAkJCQlBOEE0NzMxNzE1MUE4MjVCMDA0MTIzRkYgLyog
VENTcGluTG9jay5oICovLApAQCAtMTI0MSw2ICsxMjQ3LDcgQEAKIAkJCQkwRjlEMzM2MTE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlE
MzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkREQkZBODE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMTQxMSw2ICsxNDE4LDcgQEAKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2
NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxMzYw
NjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNSw1ICsxMTUsMTAgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFJh
dwogICAgIG91dC5wcmludGYoIiVwIiwgdmFsdWUudmFsdWUoKSk7CiB9CiAKK3ZvaWQgZHVtcENo
YXJhY3RlcihQcmludFN0cmVhbSYgb3V0LCBjaGFyIHZhbHVlKQoreworICAgIG91dC5wcmludGYo
IiVjIiwgdmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dU
Ri93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5oCShyZXZpc2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDkgQEAgcHVibGljOgogdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciopOwogdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgY29uc3QgU3RyaW5nJik7CitpbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIGNoYXIqIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4odmFsdWUpKTsgfQoraW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBDU3RyaW5nJiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nh
c3Q8Y29uc3QgQ1N0cmluZyY+KHZhbHVlKSk7IH0KK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgU3RyaW5nJiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RyaW5nJj4odmFsdWUpKTsgfQogdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgYm9vbCk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBpbnQp
Owogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgdW5zaWduZWQpOwpAQCAtMTcxLDgg
KzE3NCw1MSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBmbG9hdCk7CiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBkb3VibGUpOwogdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgVCYgdmFsdWUpCit7CisgICAg
dmFsdWUuZHVtcChvdXQpOworfQorCisjZGVmaW5lIE1BS0VfUFJJTlRfQURBUFRPUihOYW1lLCBU
eXBlLCBmdW5jdGlvbikgXAorICAgIGNsYXNzIE5hbWUgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIE5hbWUoY29uc3QgVHlwZSYgdmFsdWUpICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKSAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmdW5jdGlvbihv
dXQsIG1fdmFsdWUpOyAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFR5cGUgbV92YWx1ZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBNQUtFX1BSSU5UX01FVEhPRF9BREFQVE9S
KE5hbWUsIFR5cGUsIG1ldGhvZCkgXAorICAgIGNsYXNzIE5hbWUgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIE5hbWUoY29uc3QgVHlwZSYgdmFsdWUpICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKSAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgICAgICAgIFwKKyAgICAgICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBtX3Zh
bHVlLm1ldGhvZChvdXQpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcml2YXRlOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFR5cGUgbV92YWx1ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworLy8gVXNlIGFuIGFkYXB0b3ItYmFzZWQgZHVt
cGVyIGZvciBjaGFyYWN0ZXJzIHRvIGF2b2lkIHNpdHVhdGlvbnMgd2hlcmUKKy8vIHlvdSd2ZSAi
Y29tcHJlc3NlZCIgYW4gaW50ZWdlciB0byBhIGNoYXJhY3RlciBhbmQgaXQgZW5kcyB1cCBwcmlu
dGluZworLy8gYXMgQVNDSUkgd2hlbiB5b3Ugd2FudGVkIGl0IHRvIHByaW50IGFzIGEgbnVtYmVy
Lgordm9pZCBkdW1wQ2hhcmFjdGVyKFByaW50U3RyZWFtJiwgY2hhcik7CitNQUtFX1BSSU5UX0FE
QVBUT1IoQ2hhcmFjdGVyRHVtcCwgY2hhciwgZHVtcENoYXJhY3Rlcik7CisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCit1c2luZyBXVEY6OkNoYXJhY3RlckR1bXA7CiB1c2luZyBXVEY6OlByaW50U3Ry
ZWFtOwogCiAjZW5kaWYgLy8gUHJpbnRTdHJlYW1faApJbmRleDogU291cmNlL1dURi93dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1By
aW50U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50
U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworU3RyaW5nUHJpbnRTdHJlYW06OlN0cmluZ1ByaW50U3Ry
ZWFtKCkKKyAgICA6IG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQorICAgICwgbV9uZXh0KDApCisg
ICAgLCBtX3NpemUoc2l6ZW9mKG1faW5saW5lQnVmZmVyKSkKK3sKKyAgICBtX2J1ZmZlclswXSA9
IDA7IC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgbnVsbCB0ZXJtaW5hdG9yLgor
fQorCitTdHJpbmdQcmludFN0cmVhbTo6flN0cmluZ1ByaW50U3RyZWFtKCkKK3sKKyAgICBpZiAo
bV9idWZmZXIgPT0gbV9pbmxpbmVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7Cit9CisKK3ZvaWQgU3RyaW5nUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3Qg
Y2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCit7CisgICAgQVNTRVJUKG1fbmV4dCA8IG1f
c2l6ZSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlclttX25leHRdKTsKKyAgICAKKyAgICB2YV9saXN0
IGZpcnN0UGFzc0FyZ0xpc3Q7CisgICAgdmFfY29weShmaXJzdFBhc3NBcmdMaXN0LCBhcmdMaXN0
KTsKKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0
V291bGRIYXZlQmVlbldyaXR0ZW4gPQorICAgICAgICB2c25wcmludGYobV9idWZmZXIgKyBtX25l
eHQsIG1fc2l6ZSAtIG1fbmV4dCwgZm9ybWF0LCBmaXJzdFBhc3NBcmdMaXN0KTsKKyAgICAKKyAg
ICBpbnQgbnVtYmVyT2ZCeXRlc1RoYXRXb3VsZEhhdmVCZWVuV3JpdHRlbiA9CisgICAgICAgIG51
bWJlck9mQnl0ZXNOb3RJbmNsdWRpbmdUZXJtaW5hdG9yVGhhdFdvdWxkSGF2ZUJlZW5Xcml0dGVu
ICsgMTsKKyAgICAKKyAgICBpZiAobV9uZXh0ICsgbnVtYmVyT2ZCeXRlc1RoYXRXb3VsZEhhdmVC
ZWVuV3JpdHRlbiA8PSBtX3NpemUpIHsKKyAgICAgICAgbV9uZXh0ICs9IG51bWJlck9mQnl0ZXNO
b3RJbmNsdWRpbmdUZXJtaW5hdG9yVGhhdFdvdWxkSGF2ZUJlZW5Xcml0dGVuOworICAgICAgICBy
ZXR1cm47IC8vIFRoaXMgbWVhbnMgdGhhdCB2c25wcmludGYoKSBzdWNjZWVkZWQuCisgICAgfQor
ICAgIAorICAgIGluY3JlYXNlU2l6ZShtX25leHQgKyBudW1iZXJPZkJ5dGVzVGhhdFdvdWxkSGF2
ZUJlZW5Xcml0dGVuKTsKKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rl
cm1pbmF0b3JUaGF0V2VyZVdyaXR0ZW4gPQorICAgICAgICB2c25wcmludGYobV9idWZmZXIgKyBt
X25leHQsIG1fc2l6ZSAtIG1fbmV4dCwgZm9ybWF0LCBhcmdMaXN0KTsKKyAgICAKKyAgICBpbnQg
bnVtYmVyT2ZCeXRlc1RoYXRXZXJlV3JpdHRlbiA9IG51bWJlck9mQnl0ZXNOb3RJbmNsdWRpbmdU
ZXJtaW5hdG9yVGhhdFdlcmVXcml0dGVuICsgMTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKG51
bWJlck9mQnl0ZXNUaGF0V2VyZVdyaXR0ZW4sIG1fbmV4dCArIG51bWJlck9mQnl0ZXNUaGF0V2Vy
ZVdyaXR0ZW4gPD0gbV9zaXplKTsKKyAgICAKKyAgICBtX25leHQgKz0gbnVtYmVyT2ZCeXRlc05v
dEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0V2VyZVdyaXR0ZW47CisgICAgCisgICAgQVNTRVJUKG1f
bmV4dCA8IG1fc2l6ZSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlclttX25leHRdKTsKK30KKworQ1N0
cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9DU3RyaW5nKCkKK3sKKyAgICBBU1NFUlQobV9uZXh0
ID09IHN0cmxlbihtX2J1ZmZlcikpOworICAgIHJldHVybiBDU3RyaW5nKG1fYnVmZmVyLCBtX25l
eHQpOworfQorCit2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFzZVNpemUoc2l6ZV90IG5l
d1NpemUpCit7CisgICAgQVNTRVJUKG5ld1NpemUgPiBtX3NpemUpOworICAgIEFTU0VSVChuZXdT
aXplID4gc2l6ZW9mKG1faW5saW5lQnVmZmVyKSk7CisgICAgCisgICAgLy8gVXNlIGV4cG9uZW50
aWFsIHJlc2l6aW5nIHRvIHJlZHVjZSB0aHJhc2hpbmcuCisgICAgbV9zaXplID0gbmV3U2l6ZSA8
PCAxOworICAgIAorICAgIC8vIFVzZSBmYXN0TWFsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2Mg
YmVjYXVzZSB3ZSBrbm93IHRoYXQgZm9yIHRoZSBzaXplcyB3ZSdyZSB1c2luZywKKyAgICAvLyBm
YXN0UmVhbGxvYyB3aWxsIGp1c3QgZG8gbWFsbG9jK2ZyZWUgYW55d2F5LiBBbHNvLCB0aGlzIHNp
bXBsaWZpZXMgdGhlIGNvZGUgc2luY2UKKyAgICAvLyB3ZSBjYW4ndCByZWFsbG9jIHRoZSBpbmxp
bmUgYnVmZmVyLgorICAgIGNoYXIqIG5ld0J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihmYXN0
TWFsbG9jKG1fc2l6ZSkpOworICAgIG1lbWNweShuZXdCdWZmZXIsIG1fYnVmZmVyLCBtX25leHQg
KyAxKTsKKyAgICBpZiAobV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCisgICAgICAgIGZhc3RG
cmVlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBTdHJpbmdQcmludFN0cmVhbV9oCisjZGVmaW5lIFN0cmluZ1ByaW50U3Ry
ZWFtX2gKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0cmluZ1ByaW50U3RyZWFt
IDogcHVibGljIFByaW50U3RyZWFtIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdQcmludFN0cmVhbSgp
OworICAgIH5TdHJpbmdQcmludFN0cmVhbSgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCB2cHJp
bnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwg
MCk7CisgICAgCisgICAgQ1N0cmluZyB0b0NTdHJpbmcoKTsKKyAgICAKK3ByaXZhdGU6CisgICAg
dm9pZCBpbmNyZWFzZVNpemUoc2l6ZV90KTsKKyAgICAKKyAgICBjaGFyKiBtX2J1ZmZlcjsKKyAg
ICBzaXplX3QgbV9uZXh0OworICAgIHNpemVfdCBtX3NpemU7CisgICAgY2hhciBtX2lubGluZUJ1
ZmZlclsxMjhdOworfTsKKworLy8gU3RyaW5naWZ5IGFueSB0eXBlIFQgdGhhdCBoYXMgYSBXVEY6
OnByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBUJikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitDU3RyaW5nIHRvQ1N0cmluZyhjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmdQcmlu
dFN0cmVhbSBzdHJlYW07CisgICAgc3RyZWFtLnByaW50KHZhbHVlKTsKKyAgICByZXR1cm4gc3Ry
ZWFtLnRvQ1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpT
dHJpbmdQcmludFN0cmVhbTsKK3VzaW5nIFdURjo6dG9DU3RyaW5nOworCisjZW5kaWYgLy8gU3Ry
aW5nUHJpbnRTdHJlYW1faAorCg==
</data>
<flag name="review"
          id="192460"
          type_id="1"
          status="+"
          setter="msaboff"
    />
    <flag name="commit-queue"
          id="192464"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176623</attachid>
            <date>2012-11-28 18:34:52 -0800</date>
            <delta_ts>2012-11-28 20:27:53 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>spectype.patch</filename>
            <type>text/plain</type>
            <size>47124</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MDg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVm
ZmVyW3RoaW5neV0gaWRpb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgor
CisgICAgICAgIENoYW5nZWQgU3BlY3VsYXRlZFR5cGUgdG8gYmUgImR1bXBhYmxlIiBieSBzYXlp
bmcgdGhpbmdzIGxpa2U6CisgICAgICAgIAorICAgICAgICBkYXRhTG9nKCJ0aGluZ3kgPSAiLCBT
cGVjdWxhdGlvbkR1bXAodGhpbmd5KSkKKyAgICAgICAgCisgICAgICAgIFJlbW92ZWQgdGhlIG9s
ZCBzdHJpbmdpZmljYXRpb24gZnVuY3Rpb25zLCBhbmQgY2hhbmdlZCBhbGwgY29kZSB0aGF0IHJl
ZmVycmVkIHRvIHRoZW0KKyAgICAgICAgdG8gdXNlIHRoZSBuZXcgZGF0YUxvZygpL3ByaW50KCkg
c3R5bGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OnNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyk6CisgICAgICAgIChKU0M6OmR1bXBT
cGVjdWxhdGlvbkFiYnJldmlhdGVkKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGVCYXNlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjppbmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
dW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgpOgorICAgICAgICAqIGRm
Zy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wOjpWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKToKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oOiBBZGRlZC4KKyAgICAgICAgKFZhcmlhYmxlQWNjZXNzRGF0YUR1
bXApOgorCiAyMDEyLTExLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ29weWluZyBwaGFzZSBzaG91bGQgdXNlIHdvcmsgbGlzdHMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDYgKzEwMCw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRm
Zy9ERkdWYWx1ZVNvdXJjZS5jcHAKKyAgICBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAKICAgICBkZmcvREZHVmFyaWFibGVFdmVudC5jcHAKICAgICBkZmcvREZHVmFyaWFibGVFdmVu
dFN0cmVhbS5jcHAKICAgICBkZmcvREZHVmFsaWRhdGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1
MCw2ICsyNTAsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFs
UmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgXAogICAgIGRmZy9E
RkdUaHVua3MuY3BwIFwKICAgICBkZmcvREZHVmFsdWVTb3VyY2UuY3BwIFwKKyAgICBkZmcvREZH
VmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgXAogICAgIGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNw
cCBcCiAgICAgZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIFwKICAgICBkZmcvREZHVmFs
aWRhdGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzYwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3LDYgKzIzNyw4IEBACiAJCTBG
RDgyRTU2MTQxREFGMDgwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuY3BwICovOyB9OwogCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyog
REZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTg2MTQxRjNGRjEw
MDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuY3BwICovOyB9OworCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkREQkZCMjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5jcHAgKi87IH07CisJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkREQkZCMzE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDgg
LyogT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsKIAkJMEZFQjNFQ0QxNjIzN0Y0RDAwQUI2N0FEIC8q
IFR5cGVkQXJyYXlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVCM0VDQjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2Ny
aXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTAzNCw2ICsxMDM2LDggQEAKIAkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09T
UkVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkVu
dHJ5LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RG
R09TUkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTg0MTQxRjNG
REEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRERCRkIyMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkREQkZCMzE2NjZFRUQ1MDBDNTVG
RUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmg7IHBhdGggPSBkZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUy
MjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVCM0VDQjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheURlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjQsNiArMjQ2OCw4IEBACiAJCQkJMEYyQkRD
NEUxNTIyOEJFNzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCAqLywKIAkJCQkwRjJCREM0
MDE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCAqLywKIAkJCQkwRjYyMDE3MjE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi8sCisJCQkJMEZEREJG
QjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwICovLAor
CQkJCTBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmggKi8sCiAJCQkJMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQu
Y3BwICovLAogCQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50
LmggKi8sCiAJCQkJMEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRT
dHJlYW0uY3BwICovLApAQCAtMzAzOSw2ICszMDQ1LDcgQEAKIAkJCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQUY3RUZFMTY1
QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjIxLDYgKzM2MjgsNyBAQAogCQkJCTBG
QUY3RUZEMTY1QkE5MUIwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY3M0Q3QUUxNjVBMTQyRDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERp
c2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVG
RUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQ0ICszNCwxNDMgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSA8d3RmL0JvdW5kc0NoZWNrZWRQb2ludGVyLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBjaGFyKiBzcGVjdWxhdGlvblRv
U3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQordm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRT
dHJlYW0mIG91dCwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IFNw
ZWNOb25lKQotICAgICAgICByZXR1cm4gIk5vbmUiOworICAgIGlmICh2YWx1ZSA9PSBTcGVjTm9u
ZSkgeworICAgICAgICBvdXQucHJpbnQoIk5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgY29uc3QgaW50IHNpemUgPSAyNTY7Ci0gICAgc3RhdGljIGNoYXIg
ZGVzY3JpcHRpb25bc2l6ZV07Ci0gICAgQm91bmRzQ2hlY2tlZFBvaW50ZXI8Y2hhcj4gcHRyKGRl
c2NyaXB0aW9uLCBzaXplKTsKKyAgICBTdHJpbmdQcmludFN0cmVhbSBteU91dDsKICAgICAKICAg
ICBib29sIGlzVG9wID0gdHJ1ZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjQ2VsbE90aGVy
KQotICAgICAgICBwdHIuc3RyY2F0KCJPdGhlcmNlbGwiKTsKKyAgICAgICAgbXlPdXQucHJpbnQo
Ik90aGVyY2VsbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAg
ICBpZiAodmFsdWUgJiBTcGVjT2JqZWN0T3RoZXIpCi0gICAgICAgIHB0ci5zdHJjYXQoIk90aGVy
b2JqIik7CisgICAgICAgIG15T3V0LnByaW50KCJPdGhlcm9iaiIpOwogICAgIGVsc2UKICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRmluYWxPYmplY3Qp
Ci0gICAgICAgIHB0ci5zdHJjYXQoIkZpbmFsIik7CisgICAgICAgIG15T3V0LnByaW50KCJGaW5h
bCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKIAogICAgIGlmICh2YWx1ZSAm
IFNwZWNBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiQXJyYXkiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAog
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ4QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkludDhh
cnJheSIpOworICAgICAgICBteU91dC5wcmludCgiSW50OGFycmF5Iik7CiAgICAgZWxzZQogICAg
ICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQxNkFycmF5
KQotICAgICAgICBwdHIuc3RyY2F0KCJJbnQxNmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50
KCJJbnQxNmFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAog
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQzMkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJJbnQz
MmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJJbnQzMmFycmF5Iik7CiAgICAgZWxzZQog
ICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50OEFy
cmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50OGFycmF5Iik7CisgICAgICAgIG15T3V0LnBy
aW50KCJVaW50OGFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogCiAg
ICAgaWYgKHZhbHVlICYgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KQotICAgICAgICBwdHIuc3RyY2F0
KCJVaW50OGNsYW1wZWRhcnJheSIpOworICAgICAgICBteU91dC5wcmludCgiVWludDhjbGFtcGVk
YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYg
KHZhbHVlICYgU3BlY1VpbnQxNkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MTZhcnJh
eSIpOworICAgICAgICBteU91dC5wcmludCgiVWludDE2YXJyYXkiKTsKICAgICBlbHNlCiAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY1VpbnQzMkFycmF5
KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MzJhcnJheSIpOworICAgICAgICBteU91dC5wcmlu
dCgiVWludDMyYXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAg
CiAgICAgaWYgKHZhbHVlICYgU3BlY0Zsb2F0MzJBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgi
RmxvYXQzMmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJGbG9hdDMyYXJyYXkiKTsKICAg
ICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3Bl
Y0Zsb2F0NjRBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiRmxvYXQ2NGFycmF5Iik7CisgICAg
ICAgIG15T3V0LnByaW50KCJGbG9hdDY0YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9w
ID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0Z1bmN0aW9uKQotICAgICAgICBw
dHIuc3RyY2F0KCJGdW5jdGlvbiIpOworICAgICAgICBteU91dC5wcmludCgiRnVuY3Rpb24iKTsK
ICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYg
U3BlY015QXJndW1lbnRzKQotICAgICAgICBwdHIuc3RyY2F0KCJNeWFyZ3VtZW50cyIpOworICAg
ICAgICBteU91dC5wcmludCgiTXlhcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9w
ID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ZvcmVpZ25Bcmd1bWVudHMpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIkZvcmVpZ25hcmd1bWVudHMiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkZvcmVpZ25hcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY1N0cmluZykKLSAgICAgICAgcHRyLnN0cmNhdCgi
U3RyaW5nIik7CisgICAgICAgIG15T3V0LnByaW50KCJTdHJpbmciKTsKICAgICBlbHNlCiAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ludDMyKQotICAg
ICAgICBwdHIuc3RyY2F0KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkludCIpOwogICAg
IGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlUmVhbCkKLSAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOworICAgICAgICBt
eU91dC5wcmludCgiRG91YmxlcmVhbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQotICAgICAgICBwdHIuc3Ry
Y2F0KCJEb3VibGVuYW4iKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZW5hbiIpOwogICAg
IGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVj
Qm9vbGVhbikKLSAgICAgICAgcHRyLnN0cmNhdCgiQm9vbCIpOworICAgICAgICBteU91dC5wcmlu
dCgiQm9vbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBp
ZiAodmFsdWUgJiBTcGVjT3RoZXIpCi0gICAgICAgIHB0ci5zdHJjYXQoIk90aGVyIik7CisgICAg
ICAgIG15T3V0LnByaW50KCJPdGhlciIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAKLSAgICBpZiAoaXNUb3ApIHsKLSAgICAgICAgcHRyID0gZGVzY3JpcHRpb247Ci0g
ICAgICAgIHB0ci5zdHJjYXQoIlRvcCIpOwotICAgIH0KKyAgICBpZiAoaXNUb3ApCisgICAgICAg
IG91dC5wcmludCgiVG9wIik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQobXlPdXQudG9D
U3RyaW5nKCkpOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNFbXB0eSkKLSAgICAgICAgcHRy
LnN0cmNhdCgiRW1wdHkiKTsKLSAgICAKLSAgICAqcHRyKysgPSAwOwotICAgIAotICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKKyAgICAgICAgb3V0LnByaW50KCJFbXB0eSIpOwogfQogCi1jb25zdCBj
aGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcoU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbikKKy8vIFdlIGRvbid0IGV4cG9zZSB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbnlv
bmUgcmVseWluZyBvbiB0aGUgZmFjdCB0aGF0IHRoaXMgbWV0aG9kIGN1cnJlbnRseQorLy8ganVz
dCByZXR1cm5zIHN0cmluZyBjb25zdGFudHMuCitzdGF0aWMgY29uc3QgY2hhciogc3BlY3VsYXRp
b25Ub0FiYnJldmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAg
aWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJu
ICI8RmluYWw+IjsKQEAgLTIxOCw2ICsyMTcsMTEgQEAgY29uc3QgY2hhciogc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaQogICAgIHJldHVybiAiIjsKIH0KIAordm9pZCBkdW1wU3BlY3VsYXRp
b25BYmJyZXZpYXRlZChQcmludFN0cmVhbSYgb3V0LCBTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sK
KyAgICBvdXQucHJpbnQoc3BlY3VsYXRpb25Ub0FiYnJldmlhdGVkU3RyaW5nKHZhbHVlKSk7Cit9
CisKIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbykKIHsKICAgICBpZiAoY2xhc3NJbmZvID09ICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw4ICsyODksMTEg
QEAgaW5saW5lIGJvb2wgaXNFbXB0eVNwZWN1bGF0aW9uKFNwZWN1bGF0ZQogICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjRW1wdHk7CiB9CiAKLWNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9TdHJpbmco
U3BlY3VsYXRlZFR5cGUgdmFsdWUpOwotY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub0FiYnJldmlh
dGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKTsKK3ZvaWQgZHVtcFNwZWN1bGF0aW9uKFBy
aW50U3RyZWFtJiwgU3BlY3VsYXRlZFR5cGUpOwordm9pZCBkdW1wU3BlY3VsYXRpb25BYmJyZXZp
YXRlZChQcmludFN0cmVhbSYsIFNwZWN1bGF0ZWRUeXBlKTsKKworTUFLRV9QUklOVF9BREFQVE9S
KFNwZWN1bGF0aW9uRHVtcCwgU3BlY3VsYXRlZFR5cGUsIGR1bXBTcGVjdWxhdGlvbik7CitNQUtF
X1BSSU5UX0FEQVBUT1IoQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAsIFNwZWN1bGF0ZWRUeXBl
LCBkdW1wU3BlY3VsYXRpb25BYmJyZXZpYXRlZCk7CiAKIC8vIE1lcmdlIHR3byBwcmVkaWN0aW9u
cy4gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGp1c3QgZG9lcyBsZWZ0IHwgcmlnaHQuIEl0IG1h
eQogLy8gc2VlbSB0ZW1wdGluZyB0byBkbyBzbyBkaXJlY3RseSwgYnV0IHlvdSB3b3VsZCBiZSBk
b2luZyBzbyBhdCB5b3VyIG93biBwZXJpbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEyLDEwICsxMTIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewotICAgICAgICBvdXQucHJpbnRmKAotICAg
ICAgICAgICAgInNhbXBsZXMgPSAldSwgcHJlZGljdGlvbiA9ICVzIiwKLSAgICAgICAgICAgIHRv
dGFsTnVtYmVyT2ZTYW1wbGVzKCksCi0gICAgICAgICAgICBzcGVjdWxhdGlvblRvU3RyaW5nKG1f
cHJlZGljdGlvbikpOworICAgICAgICBvdXQucHJpbnQoInNhbXBsZXMgPSAiLCB0b3RhbE51bWJl
ck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0
aW9uKSk7CiAgICAgICAgIG91dC5wcmludGYoIiwgdmFsdWUgPSAiKTsKICAgICAgICAgaWYgKG1f
c2luZ2xldG9uVmFsdWVJc1RvcCkKICAgICAgICAgICAgIG91dC5wcmludGYoIlRPUCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IFZpcnR1YWxSZWdpc3Rlcl9oCiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDQgKzM4LDEz
IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihWaXJ0dWFsUmVnaXN0ZXIpID0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6VmlydHVhbFJlZ2lzdGVyIHZhbHVlKQoreworICAgIG91
dC5wcmludChzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCiAjZW5kaWYgLy8gVmlydHVhbFJlZ2lzdGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzYwNjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzc0LDcgKzM3NCw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIG91dC5wcmludCgKLSAgICAg
ICAgICAgICIoIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCAiLCAiLCBhcnJheU1vZGVz
VG9TdHJpbmcobV9hcnJheU1vZGVzKSwgIiwgIiwKKyAgICAgICAgICAgICIoIiwgU3BlY3VsYXRp
b25EdW1wKG1fdHlwZSksICIsICIsIGFycmF5TW9kZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpLCAi
LCAiLAogICAgICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUsICIsICIsIG1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoISFtX3ZhbHVlKQogICAgICAgICAgICAg
b3V0LnByaW50KCIsICIsIG1fdmFsdWUuZGVzY3JpcHRpb24oKSk7CkBAIC01MzIsMTUgKzUzMiw2
IEBAIHByaXZhdGU6CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAotbmFtZXNwYWNlIFdU
RiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SlNDOjpERkc6OkFic3RyYWN0VmFsdWUmIHZhbHVlKQotewotICAgIHZhbHVlLmR1bXAob3V0KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAog
I2VuZGlmIC8vIERGR0Fic3RyYWN0VmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjcsOCArMjY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fbGF6eU9wZXJhbmRzLnByZWRpY3Rpb24oCiAgICAgICAgICAgICAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSkpOwogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkxhenkgb3BlcmFu
ZCBbQCV1LCBiYyMldSwgciVkXSBwcmVkaWN0aW9uOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBu
b2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBub2RlLmxvY2FsKCksIHNwZWN1bGF0aW9uVG9TdHJp
bmcocHJlZGljdGlvbikpOworICAgICAgICBkYXRhTG9nKCJMYXp5IG9wZXJhbmQgW0AiLCBub2Rl
SW5kZXgsICIsIGJjIyIsIG1fY3VycmVudEluZGV4LCAiLCByIiwgbm9kZS5sb2NhbCgpLCAiXSBw
cmVkaWN0aW9uOiAiLCBTcGVjdWxhdGlvbkR1bXAocHJlZGljdGlvbiksICJcbiIpOwogI2VuZGlm
CiAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJlZGljdGlvbik7
CiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CkBAIC04ODcsNyArODg2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgIGRhdGFMb2dGKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBzcGVjdWxhdGlvblRvU3RyaW5nKHByZWRpY3Rpb24p
KTsKKyAgICAgICAgZGF0YUxvZygiRHluYW1pYyBbQCIsIG5vZGVJbmRleCwgIiwgYmMjIiwgYnl0
ZWNvZGVJbmRleCwgIl0gcHJlZGljdGlvbjogIiwgU3BlY3VsYXRpb25EdW1wKHByZWRpY3Rpb24p
LCAiXG4iKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTM2MDY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCi0jaW5jbHVkZSA8d3RmL0JvdW5kc0NoZWNrZWRQb2ludGVyLmg+CisjaW5j
bHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKQEAgLTU3LDQ0ICs1Nyw2IEBAIGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5hbWUoTm9kZVR5cGUg
b3ApCiAgICAgcmV0dXJuIGRmZ09wTmFtZXNbb3BdOwogfQogCi1jb25zdCBjaGFyKiBHcmFwaDo6
bmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhKQotewotICAgIC8vIFZhcmlhYmxlcyBhcmUgYWxyZWFkeSBudW1iZXJlZC4gRm9yIHJl
YWRhYmlsaXR5IG9mIElSIGR1bXBzLCB0aGlzIHJldHVybnMKLSAgICAvLyBhbiBhbHBoYWJldGlj
IG5hbWUgZm9yIHRoZSB2YXJpYWJsZSBhY2Nlc3MgZGF0YSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2
ZSB0bwotICAgIC8vIHJlYXNvbiBhYm91dCB0d28gbnVtYmVycyAodmFyaWFibGUgbnVtYmVyIGFu
ZCBsaXZlIHJhbmdlIG51bWJlciksIGJ1dCBpbnN0ZWFkCi0gICAgLy8gYSBudW1iZXIgYW5kIGEg
bGV0dGVyLgotICAgIAotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhYmxl
QWNjZXNzRGF0YS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoJm1fdmFyaWFibGVBY2Nlc3NE
YXRhW2ldID09IHZhcmlhYmxlQWNjZXNzRGF0YSkgewotICAgICAgICAgICAgaW5kZXggPSBpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGlu
ZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgCi0gICAg
aWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJuICJBIjsKLQotICAgIHN0YXRpYyBjaGFyIGJ1Zlsx
MDBdOwotICAgIEJvdW5kc0NoZWNrZWRQb2ludGVyPGNoYXI+IHB0cihidWYsIHNpemVvZihidWYp
KTsKLSAgICAKLSAgICB3aGlsZSAoaW5kZXgpIHsKLSAgICAgICAgKnB0cisrID0gJ0EnICsgKGlu
ZGV4ICUgMjYpOwotICAgICAgICBpbmRleCAvPSAyNjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHZh
cmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQotICAgICAgICAqcHRyKysgPSAnKic7Ci0g
ICAgCi0gICAgcHRyLnN0cmNhdChzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcodmFyaWFi
bGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkpKTsKLSAgICAKLSAgICAqcHRyKysgPSAwOwotICAg
IAotICAgIHJldHVybiBidWY7Ci19Ci0KIHN0YXRpYyB2b2lkIHByaW50V2hpdGVTcGFjZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBhbW91bnQpCiB7CiAgICAgd2hpbGUgKGFtb3VudC0tID4g
MCkKQEAgLTE1Miw4ICsxMTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IEVkZ2UgCiAgICAgb3V0LnByaW50KAogICAgICAgICB1c2VLaW5kVG9TdHJpbmcoZWRnZS51c2VL
aW5kKCkpLAogICAgICAgICAiQCIsIGVkZ2UuaW5kZXgoKSwKLSAgICAgICAgc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKAotICAgICAgICAgICAgYXQoZWRnZSkucHJlZGljdGlvbigpKSk7
CisgICAgICAgIEFiYnJldmlhdGVkU3BlY3VsYXRpb25EdW1wKGF0KGVkZ2UpLnByZWRpY3Rpb24o
KSkpOwogfQogCiB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgTm9kZUluZGV4IG5vZGVJbmRleCkKQEAgLTI2NCw3ICsyMjUsNyBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgaWYgKG5vZGUuaGFzU3RvcmFn
ZUFjY2Vzc0RhdGEoKSkgewogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgc3RvcmFnZUFjY2Vz
c0RhdGEgPSBtX3N0b3JhZ2VBY2Nlc3NEYXRhW25vZGUuc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgp
XTsKICAgICAgICAgb3V0LnByaW50KGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsICJpZCIsIHN0b3Jh
Z2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsICJ7IiwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcikuc3RyaW5nKCksICJ9Iik7Ci0g
ICAgICAgIG91dC5wcmludCgiLCAiLCBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQpOworICAgICAg
ICBvdXQucHJpbnQoIiwgIiwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzdG9yYWdlQWNjZXNzRGF0
YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIEFTU0VS
VChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpID09IG5vZGUuaGFzTG9jYWwoKSk7CkBAIC0y
NzIsOSArMjMzLDkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGludCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5vcGVyYW5kKCk7CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkK
LSAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIiLCAiYXJnIiwgb3Bl
cmFuZFRvQXJndW1lbnQob3BlcmFuZCksICIoIiwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZh
cmlhYmxlQWNjZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpLCAiKCIsIFZh
cmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIi
LCAiciIsIG9wZXJhbmQsICIoIiwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNj
ZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgInIiLCBvcGVyYW5kLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZh
cmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KICAgICBpZiAobm9kZS5oYXNDb25zdGFudEJ1ZmZlcigpKSB7CkBAIC0zMjEsOSArMjgyLDkg
QEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogCiAgICAgaWYgKCFz
a2lwcGVkKSB7CiAgICAgICAgIGlmIChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpKQotICAg
ICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhu
b2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91YmxlIiA6
ICIiKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9u
RHVtcChub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91
YmxlIiA6ICIiKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNIZWFwUHJlZGljdGlvbigpKQot
ICAgICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgc3BlY3VsYXRpb25Ub1N0cmlu
Zyhub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICBw
cmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpKTsK
ICAgICB9CiAgICAgCiAgICAgb3V0LnByaW50KCJcbiIpOwpAQCAtNDU5LDcgKzQyMCw5IEBAIHZv
aWQgR3JhcGg6OnByZWRpY3RBcmd1bWVudFR5cGVzKCkKICAgICAgICAgYXQobV9hcmd1bWVudHNb
YXJnXSkudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgICAgIGRhdGFMb2dGKCJBcmd1bWVudCBbJXp1XSBwcmVkaWN0aW9uOiAlc1xuIiwgYXJn
LCBzcGVjdWxhdGlvblRvU3RyaW5nKGF0KG1fYXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJB
cmd1bWVudCBbIiwgYXJnLCAiXSBwcmVkaWN0aW9uOiAiLAorICAgICAgICAgICAgU3BlY3VsYXRp
b25EdW1wKGF0KG1fYXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
aW9uKCkpLCAiXG4iKTsKICNlbmRpZgogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDkgKzMyNyw2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUpOwogICAgIAotICAg
IC8vIFRoaXMgaXMgTyhuKSwgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHZlcmJvc2UgZHVt
cHMuCi0gICAgY29uc3QgY2hhciogbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNj
ZXNzRGF0YSopOwotCiAgICAgdm9pZCBwcmVkaWN0QXJndW1lbnRUeXBlcygpOwogICAgIAogICAg
IFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjAsMTUgKzMyMCw2IEBAIHByaXZhdGU6CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAotbmFtZXNwYWNlIFdURiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIHZhbHVl
KQotewotICAgIHZhbHVlLmR1bXAob3V0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAogI2VuZGlmIC8vIERGR1N0cnVjdHVyZUFic3RyYWN0
VmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CisKK1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXA6OlZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAoR3JhcGgmIGdyYXBoLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIGRhdGEpCisgICAgOiBt
X2dyYXBoKGdyYXBoKQorICAgICwgbV9kYXRhKGRhdGEpCit7Cit9CisKK3ZvaWQgVmFyaWFibGVB
Y2Nlc3NEYXRhRHVtcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmICgmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YVtpXSA9
PSBtX2RhdGEpIHsKKyAgICAgICAgICAgIGluZGV4ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbmRleCAhPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIAorICAgIGlmICghaW5kZXgpIHsKKyAgICAg
ICAgb3V0LnByaW50KCJhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAo
aW5kZXgpIHsKKyAgICAgICAgb3V0LnByaW50KENoYXJhY3RlckR1bXAoJ0EnICsgKGluZGV4ICUg
MjYpKSk7CisgICAgICAgIGluZGV4IC89IDI2OworICAgIH0KKyAgICAKKyAgICBpZiAobV9kYXRh
LT5pc0NhcHR1cmVkKCkpCisgICAgICAgIG91dC5wcmludCgiKiIpOworCisgICAgb3V0LnByaW50
KEFiYnJldmlhdGVkU3BlY3VsYXRpb25EdW1wKG1fZGF0YS0+cHJlZGljdGlvbigpKSk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wX2gKKyNkZWZpbmUgREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShE
RkdfSklUKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CitjbGFzcyBWYXJpYWJsZUFjY2Vzc0Rh
dGE7CisKK2NsYXNzIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAgeworcHVibGljOgorICAgIFZhcmlh
YmxlQWNjZXNzRGF0YUR1bXAoR3JhcGgmLCBWYXJpYWJsZUFjY2Vzc0RhdGEqKTsKKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHcmFwaCYg
bV9ncmFwaDsKKyAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG1fZGF0YTsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYg
Ly8gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcF9oCisKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYwODQp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVm
ZmVyW3RoaW5neV0gaWRpb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgor
CisgICAgICAgIEFkZGVkIGEgU3RyaW5nUHJpbnRTdHJlYW0sIGFuZCBtYWRlIGl0IGVhc3kgdG8g
Y3JlYXRlIGR1bXBlcnMgZm9yIHR5cGVkZWZzIHRvIHByaW1pdGl2ZXMuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBpOgorICAgICAgICAqIFdURi5w
cm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpkdW1wQ2hhcmFjdGVy
KToKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjpTdHJpbmdQcmludFN0cmVhbSk6CisgICAgICAg
IChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjp+U3RyaW5nUHJpbnRTdHJlYW0pOgorICAgICAgICAo
V1RGOjpTdHJpbmdQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6OlN0cmluZ1By
aW50U3RyZWFtOjp0b0NTdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmdQcmludFN0cmVhbTo6
aW5jcmVhc2VTaXplKToKKyAgICAgICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaDogQWRkZWQu
CisgICAgICAgIChTdHJpbmdQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OnRvQ1N0cmluZyk6
CisKIDIwMTItMTEtMjggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIFN0cmluZyBTdGF0cyBmb3IgcmVjZW50IGRhdGFMb2cgY2hhbmdlcyBhbmQg
YWRkIHN1bW1hcnkKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjA2OSkK
KysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDYgKzE1OSw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaCBcCiAgICAgU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1N0cmluZ0V4dHJhcy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9U
Q1BhY2tlZENhY2hlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1RDUGFnZU1hcC5oIFwKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYuZ3lwaQko
cmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL1dURi9XVEYuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtOTksNiArOTksNyBAQAogICAgICAgICAgICAgJ3d0Zi9TdGRMaWJFeHRyYXMuaCcsCiAgICAg
ICAgICAgICAnd3RmL1N0cmluZ0V4dHJhcy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nSGFz
aGVyLmgnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oJywKICAgICAgICAg
ICAgICd3dGYvVGVtcG9yYXJ5Q2hhbmdlLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oJywKQEAgLTIwMCw2ICsyMDEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9TaXplTGltaXRzLmNw
cCcsCiAgICAgICAgICAgICAnd3RmL1N0YWNrQm91bmRzLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L1N0cmluZ0V4dHJhcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdQcmludFN0cmVhbS5j
cHAnLAogICAgICAgICAgICAgJ3d0Zi9UQ1BhY2tlZENhY2hlLmgnLAogICAgICAgICAgICAgJ3d0
Zi9UQ1BhZ2VNYXAuaCcsCiAgICAgICAgICAgICAnd3RmL1RDU3BpbkxvY2suaCcsCkluZGV4OiBT
b3VyY2UvV1RGL1dURi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYucHJvCShyZXZp
c2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvV1RGL1dURi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE0
Niw2ICsxNDYsNyBAQCBIRUFERVJTICs9IFwKICAgICBTdGRMaWJFeHRyYXMuaCBcCiAgICAgU3Ry
aW5nRXh0cmFzLmggXAogICAgIFN0cmluZ0hhc2hlci5oIFwKKyAgICBTdHJpbmdQcmludFN0cmVh
bS5oIFwKICAgICBUQ1BhY2tlZENhY2hlLmggXAogICAgIFRDU3BpbkxvY2suaCBcCiAgICAgVENT
eXN0ZW1BbGxvYy5oIFwKQEAgLTIzNSw2ICsyMzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBSZWZD
b3VudGVkTGVha0NvdW50ZXIuY3BwIFwKICAgICBTSEExLmNwcCBcCiAgICAgU3RhY2tCb3VuZHMu
Y3BwIFwKKyAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAgXAogICAgIFRDU3lzdGVtQWxsb2MuY3Bw
IFwKICAgICBUaHJlYWRpbmcuY3BwIFwKICAgICBUeXBlVHJhaXRzLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dU
Ri52Y3Byb2ovV1RGLnZjcHJvagkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL1dURi9XVEYu
dmNwcm9qL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMTMsNiArMTIxMywxNCBAQAog
CQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxTdHJpbmdQ
cmludFN0cmVhbS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0
aD0iLi5cd3RmXFN0cmluZ1ByaW50U3RyZWFtLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUK
IAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFRDUGFja2VkQ2FjaGUuaCIKIAkJCT4KIAkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMzYwNjkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4
NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVFMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9OwogCQkwRkQ4MUFDNTE1NEZCMjJFMDA5ODNF
NzIgLyogRmFzdEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkwRkREQkZBNzE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmlu
Z1ByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0
cmluZ1ByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAq
LzsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUQxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkxNEYzQjBGNzE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0
dXJhdGVkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwpAQCAtMzI1LDYgKzMyNyw4
IEBACiAJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludFN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyog
RmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0
VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRERCRkE1MTY2NkRGQTMw
MEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcmludFN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSQU1TaXpl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBGOTAwREI1
MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUkFNU2l6
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYzQjBGNjE1RTQ1RTQ2MDAyMTAw
NjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTYXR1cmF0ZWRBcml0aG1ldGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MzcsNiArODQxLDggQEAKIAkJCQlBOEE0NzMxMjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
RXh0cmFzLmNwcCAqLywKIAkJCQlBOEE0NzMxMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nRXh0
cmFzLmggKi8sCiAJCQkJQThBNDczMTQxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0hhc2hlci5o
ICovLAorCQkJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgKi8sCisJCQkJMEZEREJGQTYxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFt
LmggKi8sCiAJCQkJQThBNDczMTUxNTFBODI1QjAwNDEyM0ZGIC8qIFRDUGFja2VkQ2FjaGUuaCAq
LywKIAkJCQlBOEE0NzMxNjE1MUE4MjVCMDA0MTIzRkYgLyogVENQYWdlTWFwLmggKi8sCiAJCQkJ
QThBNDczMTcxNTFBODI1QjAwNDEyM0ZGIC8qIFRDU3BpbkxvY2suaCAqLywKQEAgLTEyNDEsNiAr
MTI0Nyw3IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVh
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50
U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyog
UmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVG
IC8qIFN0cmluZ1ByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE0MTEsNiArMTQxOCw3
IEBACiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgU0VUKFdURl9IRUFERVJT
CiAgICAgU3RkTGliRXh0cmFzLmgKICAgICBTdHJpbmdFeHRyYXMuaAogICAgIFN0cmluZ0hhc2hl
ci5oCisgICAgU3RyaW5nUHJpbnRTdHJlYW0uaAogICAgIFRDUGFja2VkQ2FjaGUuaAogICAgIFRD
UGFnZU1hcC5oCiAgICAgVENTcGluTG9jay5oCkBAIC0xODQsNiArMTg1LDcgQEAgU0VUKFdURl9T
T1VSQ0VTCiAgICAgU0hBMS5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKICAgICBTdHJpbmdFeHRy
YXMuY3BwCisgICAgU3RyaW5nUHJpbnRTdHJlYW0uY3BwCiAgICAgVGhyZWFkaW5nLmNwcAogICAg
IFR5cGVUcmFpdHMuY3BwCiAgICAgV1RGVGhyZWFkRGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5jcHAJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDUgKzExNSwxMCBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgUmF3CiAgICAgb3V0LnByaW50ZigiJXAiLCB2YWx1ZS52YWx1
ZSgpKTsKIH0KIAordm9pZCBkdW1wQ2hhcmFjdGVyKFByaW50U3RyZWFtJiBvdXQsIGNoYXIgdmFs
dWUpCit7CisgICAgb3V0LnByaW50ZigiJWMiLCB2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsOSBA
QCBwdWJsaWM6CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKik7
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBDU3RyaW5nJik7CiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBTdHJpbmcmKTsKK2lubGluZSB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY2hhciogdmFsdWUpIHsgcHJpbnRJbnRl
cm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih2YWx1ZSkpOyB9CitpbmxpbmUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIENTdHJpbmcmIHZhbHVlKSB7IHByaW50
SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBDU3RyaW5nJj4odmFsdWUpKTsgfQoraW5s
aW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTdHJpbmcmIHZhbHVlKSB7
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBTdHJpbmcmPih2YWx1ZSkpOyB9
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBib29sKTsKIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIGludCk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCk7CkBAIC0xNzEsOCArMTc0LDUxIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIGZsb2F0KTsKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGRvdWJs
ZSk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBSYXdQb2ludGVyKTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBUJiB2YWx1ZSkKK3sKKyAgICB2YWx1ZS5kdW1wKG91dCk7Cit9CisKKyNkZWZpbmUgTUFL
RV9QUklOVF9BREFQVE9SKE5hbWUsIFR5cGUsIGZ1bmN0aW9uKSBcCisgICAgY2xhc3MgTmFtZSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTmFtZShjb25zdCBUeXBlJiB2
YWx1ZSkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCAgICAg
ICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIGZ1bmN0aW9uKG91dCwgbV92YWx1ZSk7ICAgICAgICAgICAgICBcCisgICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHByaXZh
dGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgVHlwZSBt
X3ZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIE1B
S0VfUFJJTlRfTUVUSE9EX0FEQVBUT1IoTmFtZSwgVHlwZSwgbWV0aG9kKSBcCisgICAgY2xhc3Mg
TmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTmFtZShjb25zdCBU
eXBlJiB2YWx1ZSkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA6IG1fdmFsdWUodmFs
dWUpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dCAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIG1fdmFsdWUubWV0aG9kKG91dCk7ICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
VHlwZSBtX3ZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisvLyBV
c2UgYW4gYWRhcHRvci1iYXNlZCBkdW1wZXIgZm9yIGNoYXJhY3RlcnMgdG8gYXZvaWQgc2l0dWF0
aW9ucyB3aGVyZQorLy8geW91J3ZlICJjb21wcmVzc2VkIiBhbiBpbnRlZ2VyIHRvIGEgY2hhcmFj
dGVyIGFuZCBpdCBlbmRzIHVwIHByaW50aW5nCisvLyBhcyBBU0NJSSB3aGVuIHlvdSB3YW50ZWQg
aXQgdG8gcHJpbnQgYXMgYSBudW1iZXIuCit2b2lkIGR1bXBDaGFyYWN0ZXIoUHJpbnRTdHJlYW0m
LCBjaGFyKTsKK01BS0VfUFJJTlRfQURBUFRPUihDaGFyYWN0ZXJEdW1wLCBjaGFyLCBkdW1wQ2hh
cmFjdGVyKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6Q2hhcmFjdGVyRHVt
cDsKIHVzaW5nIFdURjo6UHJpbnRTdHJlYW07CiAKICNlbmRpZiAvLyBQcmludFN0cmVhbV9oCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0uaCIKKworI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitTdHJpbmdQcmlu
dFN0cmVhbTo6U3RyaW5nUHJpbnRTdHJlYW0oKQorICAgIDogbV9idWZmZXIobV9pbmxpbmVCdWZm
ZXIpCisgICAgLCBtX25leHQoMCkKKyAgICAsIG1fc2l6ZShzaXplb2YobV9pbmxpbmVCdWZmZXIp
KQoreworICAgIG1fYnVmZmVyWzBdID0gMDsgLy8gTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhh
dmUgYSBudWxsIHRlcm1pbmF0b3IuCit9CisKK1N0cmluZ1ByaW50U3RyZWFtOjp+U3RyaW5nUHJp
bnRTdHJlYW0oKQoreworICAgIGlmIChtX2J1ZmZlciA9PSBtX2lubGluZUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKK30KKwordm9pZCBTdHJpbmdQcmlu
dFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKK3sK
KyAgICBBU1NFUlQobV9uZXh0IDwgbV9zaXplKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyW21fbmV4
dF0pOworICAgIAorICAgIHZhX2xpc3QgZmlyc3RQYXNzQXJnTGlzdDsKKyAgICB2YV9jb3B5KGZp
cnN0UGFzc0FyZ0xpc3QsIGFyZ0xpc3QpOworICAgIAorICAgIGludCBudW1iZXJPZkJ5dGVzTm90
SW5jbHVkaW5nVGVybWluYXRvclRoYXRXb3VsZEhhdmVCZWVuV3JpdHRlbiA9CisgICAgICAgIHZz
bnByaW50ZihtX2J1ZmZlciArIG1fbmV4dCwgbV9zaXplIC0gbV9uZXh0LCBmb3JtYXQsIGZpcnN0
UGFzc0FyZ0xpc3QpOworICAgIAorICAgIGludCBudW1iZXJPZkJ5dGVzVGhhdFdvdWxkSGF2ZUJl
ZW5Xcml0dGVuID0KKyAgICAgICAgbnVtYmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JU
aGF0V291bGRIYXZlQmVlbldyaXR0ZW4gKyAxOworICAgIAorICAgIGlmIChtX25leHQgKyBudW1i
ZXJPZkJ5dGVzVGhhdFdvdWxkSGF2ZUJlZW5Xcml0dGVuIDw9IG1fc2l6ZSkgeworICAgICAgICBt
X25leHQgKz0gbnVtYmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0V291bGRIYXZl
QmVlbldyaXR0ZW47CisgICAgICAgIHJldHVybjsgLy8gVGhpcyBtZWFucyB0aGF0IHZzbnByaW50
ZigpIHN1Y2NlZWRlZC4KKyAgICB9CisgICAgCisgICAgaW5jcmVhc2VTaXplKG1fbmV4dCArIG51
bWJlck9mQnl0ZXNUaGF0V291bGRIYXZlQmVlbldyaXR0ZW4pOworICAgIAorICAgIGludCBudW1i
ZXJPZkJ5dGVzTm90SW5jbHVkaW5nVGVybWluYXRvclRoYXRXZXJlV3JpdHRlbiA9CisgICAgICAg
IHZzbnByaW50ZihtX2J1ZmZlciArIG1fbmV4dCwgbV9zaXplIC0gbV9uZXh0LCBmb3JtYXQsIGFy
Z0xpc3QpOworICAgIAorICAgIGludCBudW1iZXJPZkJ5dGVzVGhhdFdlcmVXcml0dGVuID0gbnVt
YmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0V2VyZVdyaXR0ZW4gKyAxOworICAg
IAorICAgIEFTU0VSVF9VTlVTRUQobnVtYmVyT2ZCeXRlc1RoYXRXZXJlV3JpdHRlbiwgbV9uZXh0
ICsgbnVtYmVyT2ZCeXRlc1RoYXRXZXJlV3JpdHRlbiA8PSBtX3NpemUpOworICAgIAorICAgIG1f
bmV4dCArPSBudW1iZXJPZkJ5dGVzTm90SW5jbHVkaW5nVGVybWluYXRvclRoYXRXZXJlV3JpdHRl
bjsKKyAgICAKKyAgICBBU1NFUlQobV9uZXh0IDwgbV9zaXplKTsKKyAgICBBU1NFUlQoIW1fYnVm
ZmVyW21fbmV4dF0pOworfQorCitDU3RyaW5nIFN0cmluZ1ByaW50U3RyZWFtOjp0b0NTdHJpbmco
KQoreworICAgIEFTU0VSVChtX25leHQgPT0gc3RybGVuKG1fYnVmZmVyKSk7CisgICAgcmV0dXJu
IENTdHJpbmcobV9idWZmZXIsIG1fbmV4dCk7Cit9CisKK3ZvaWQgU3RyaW5nUHJpbnRTdHJlYW06
OmluY3JlYXNlU2l6ZShzaXplX3QgbmV3U2l6ZSkKK3sKKyAgICBBU1NFUlQobmV3U2l6ZSA+IG1f
c2l6ZSk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBzaXplb2YobV9pbmxpbmVCdWZmZXIpKTsKKyAg
ICAKKyAgICAvLyBVc2UgZXhwb25lbnRpYWwgcmVzaXppbmcgdG8gcmVkdWNlIHRocmFzaGluZy4K
KyAgICBtX3NpemUgPSBuZXdTaXplIDw8IDE7CisgICAgCisgICAgLy8gVXNlIGZhc3RNYWxsb2Mg
aW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGtub3cgdGhhdCBmb3IgdGhlIHNpemVz
IHdlJ3JlIHVzaW5nLAorICAgIC8vIGZhc3RSZWFsbG9jIHdpbGwganVzdCBkbyBtYWxsb2MrZnJl
ZSBhbnl3YXkuIEFsc28sIHRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBzaW5jZQorICAgIC8vIHdl
IGNhbid0IHJlYWxsb2MgdGhlIGlubGluZSBidWZmZXIuCisgICAgY2hhciogbmV3QnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGZhc3RNYWxsb2MobV9zaXplKSk7CisgICAgbWVtY3B5KG5ld0J1
ZmZlciwgbV9idWZmZXIsIG1fbmV4dCArIDEpOworICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGlu
ZUJ1ZmZlcikKKyAgICAgICAgZmFzdEZyZWUobV9idWZmZXIpOworICAgIG1fYnVmZmVyID0gbmV3
QnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRT
dHJlYW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFN0cmluZ1ByaW50U3RyZWFtX2gK
KyNkZWZpbmUgU3RyaW5nUHJpbnRTdHJlYW1faAorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgU3RyaW5nUHJpbnRTdHJlYW0gOiBwdWJsaWMgUHJpbnRTdHJlYW0geworcHVibGljOgor
ICAgIFN0cmluZ1ByaW50U3RyZWFtKCk7CisgICAgflN0cmluZ1ByaW50U3RyZWFtKCk7CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSBX
VEZfQVRUUklCVVRFX1BSSU5URigyLCAwKTsKKyAgICAKKyAgICBDU3RyaW5nIHRvQ1N0cmluZygp
OworICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGluY3JlYXNlU2l6ZShzaXplX3QpOworICAgIAor
ICAgIGNoYXIqIG1fYnVmZmVyOworICAgIHNpemVfdCBtX25leHQ7CisgICAgc2l6ZV90IG1fc2l6
ZTsKKyAgICBjaGFyIG1faW5saW5lQnVmZmVyWzEyOF07Cit9OworCisvLyBTdHJpbmdpZnkgYW55
IHR5cGUgVCB0aGF0IGhhcyBhIFdURjo6cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0
IFQmKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0NTdHJpbmcgdG9DU3RyaW5nKGNvbnN0IFQmIHZh
bHVlKQoreworICAgIFN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0ucHJpbnQo
dmFsdWUpOworICAgIHJldHVybiBzdHJlYW0udG9DU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlN0cmluZ1ByaW50U3RyZWFtOwordXNpbmcgV1RGOjp0b0NT
dHJpbmc7CisKKyNlbmRpZiAvLyBTdHJpbmdQcmludFN0cmVhbV9oCisK
</data>
<flag name="commit-queue"
          id="192471"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176632</attachid>
            <date>2012-11-28 20:27:53 -0800</date>
            <delta_ts>2012-11-28 20:27:53 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>spectype.patch</filename>
            <type>text/plain</type>
            <size>47230</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MDg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVm
ZmVyW3RoaW5neV0gaWRpb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgor
CisgICAgICAgIENoYW5nZWQgU3BlY3VsYXRlZFR5cGUgdG8gYmUgImR1bXBhYmxlIiBieSBzYXlp
bmcgdGhpbmdzIGxpa2U6CisgICAgICAgIAorICAgICAgICBkYXRhTG9nKCJ0aGluZ3kgPSAiLCBT
cGVjdWxhdGlvbkR1bXAodGhpbmd5KSkKKyAgICAgICAgCisgICAgICAgIFJlbW92ZWQgdGhlIG9s
ZCBzdHJpbmdpZmljYXRpb24gZnVuY3Rpb25zLCBhbmQgY2hhbmdlZCBhbGwgY29kZSB0aGF0IHJl
ZmVycmVkIHRvIHRoZW0KKyAgICAgICAgdG8gdXNlIHRoZSBuZXcgZGF0YUxvZygpL3ByaW50KCkg
c3R5bGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OnNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyk6CisgICAgICAgIChKU0M6OmR1bXBT
cGVjdWxhdGlvbkFiYnJldmlhdGVkKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGVCYXNlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjppbmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
dW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgpOgorICAgICAgICAqIGRm
Zy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wOjpWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKToKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oOiBBZGRlZC4KKyAgICAgICAgKFZhcmlhYmxlQWNjZXNzRGF0YUR1
bXApOgorCiAyMDEyLTExLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ29weWluZyBwaGFzZSBzaG91bGQgdXNlIHdvcmsgbGlzdHMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDYgKzEwMCw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRm
Zy9ERkdWYWx1ZVNvdXJjZS5jcHAKKyAgICBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAKICAgICBkZmcvREZHVmFyaWFibGVFdmVudC5jcHAKICAgICBkZmcvREZHVmFyaWFibGVFdmVu
dFN0cmVhbS5jcHAKICAgICBkZmcvREZHVmFsaWRhdGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1
MCw2ICsyNTAsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFs
UmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgXAogICAgIGRmZy9E
RkdUaHVua3MuY3BwIFwKICAgICBkZmcvREZHVmFsdWVTb3VyY2UuY3BwIFwKKyAgICBkZmcvREZH
VmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgXAogICAgIGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNw
cCBcCiAgICAgZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIFwKICAgICBkZmcvREZHVmFs
aWRhdGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzYwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3LDYgKzIzNyw4IEBACiAJCTBG
RDgyRTU2MTQxREFGMDgwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuY3BwICovOyB9OwogCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyog
REZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTg2MTQxRjNGRjEw
MDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuY3BwICovOyB9OworCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkREQkZCMjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5jcHAgKi87IH07CisJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkREQkZCMzE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDgg
LyogT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsKIAkJMEZFQjNFQ0QxNjIzN0Y0RDAwQUI2N0FEIC8q
IFR5cGVkQXJyYXlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVCM0VDQjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2Ny
aXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTAzNCw2ICsxMDM2LDggQEAKIAkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09T
UkVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkVu
dHJ5LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RG
R09TUkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTg0MTQxRjNG
REEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRERCRkIyMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkREQkZCMzE2NjZFRUQ1MDBDNTVG
RUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmg7IHBhdGggPSBkZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUy
MjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVCM0VDQjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheURlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjQsNiArMjQ2OCw4IEBACiAJCQkJMEYyQkRD
NEUxNTIyOEJFNzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCAqLywKIAkJCQkwRjJCREM0
MDE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCAqLywKIAkJCQkwRjYyMDE3MjE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi8sCisJCQkJMEZEREJG
QjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwICovLAor
CQkJCTBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmggKi8sCiAJCQkJMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQu
Y3BwICovLAogCQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50
LmggKi8sCiAJCQkJMEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRT
dHJlYW0uY3BwICovLApAQCAtMzAzOSw2ICszMDQ1LDcgQEAKIAkJCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQUY3RUZFMTY1
QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjIxLDYgKzM2MjgsNyBAQAogCQkJCTBG
QUY3RUZEMTY1QkE5MUIwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY3M0Q3QUUxNjVBMTQyRDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERp
c2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVG
RUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQ0ICszNCwxNDMgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSA8d3RmL0JvdW5kc0NoZWNrZWRQb2ludGVyLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBjaGFyKiBzcGVjdWxhdGlvblRv
U3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQordm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRT
dHJlYW0mIG91dCwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IFNw
ZWNOb25lKQotICAgICAgICByZXR1cm4gIk5vbmUiOworICAgIGlmICh2YWx1ZSA9PSBTcGVjTm9u
ZSkgeworICAgICAgICBvdXQucHJpbnQoIk5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgY29uc3QgaW50IHNpemUgPSAyNTY7Ci0gICAgc3RhdGljIGNoYXIg
ZGVzY3JpcHRpb25bc2l6ZV07Ci0gICAgQm91bmRzQ2hlY2tlZFBvaW50ZXI8Y2hhcj4gcHRyKGRl
c2NyaXB0aW9uLCBzaXplKTsKKyAgICBTdHJpbmdQcmludFN0cmVhbSBteU91dDsKICAgICAKICAg
ICBib29sIGlzVG9wID0gdHJ1ZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjQ2VsbE90aGVy
KQotICAgICAgICBwdHIuc3RyY2F0KCJPdGhlcmNlbGwiKTsKKyAgICAgICAgbXlPdXQucHJpbnQo
Ik90aGVyY2VsbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAg
ICBpZiAodmFsdWUgJiBTcGVjT2JqZWN0T3RoZXIpCi0gICAgICAgIHB0ci5zdHJjYXQoIk90aGVy
b2JqIik7CisgICAgICAgIG15T3V0LnByaW50KCJPdGhlcm9iaiIpOwogICAgIGVsc2UKICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRmluYWxPYmplY3Qp
Ci0gICAgICAgIHB0ci5zdHJjYXQoIkZpbmFsIik7CisgICAgICAgIG15T3V0LnByaW50KCJGaW5h
bCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKIAogICAgIGlmICh2YWx1ZSAm
IFNwZWNBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiQXJyYXkiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAog
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ4QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkludDhh
cnJheSIpOworICAgICAgICBteU91dC5wcmludCgiSW50OGFycmF5Iik7CiAgICAgZWxzZQogICAg
ICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQxNkFycmF5
KQotICAgICAgICBwdHIuc3RyY2F0KCJJbnQxNmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50
KCJJbnQxNmFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAog
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQzMkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJJbnQz
MmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJJbnQzMmFycmF5Iik7CiAgICAgZWxzZQog
ICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50OEFy
cmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50OGFycmF5Iik7CisgICAgICAgIG15T3V0LnBy
aW50KCJVaW50OGFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogCiAg
ICAgaWYgKHZhbHVlICYgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KQotICAgICAgICBwdHIuc3RyY2F0
KCJVaW50OGNsYW1wZWRhcnJheSIpOworICAgICAgICBteU91dC5wcmludCgiVWludDhjbGFtcGVk
YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYg
KHZhbHVlICYgU3BlY1VpbnQxNkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MTZhcnJh
eSIpOworICAgICAgICBteU91dC5wcmludCgiVWludDE2YXJyYXkiKTsKICAgICBlbHNlCiAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY1VpbnQzMkFycmF5
KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MzJhcnJheSIpOworICAgICAgICBteU91dC5wcmlu
dCgiVWludDMyYXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAg
CiAgICAgaWYgKHZhbHVlICYgU3BlY0Zsb2F0MzJBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgi
RmxvYXQzMmFycmF5Iik7CisgICAgICAgIG15T3V0LnByaW50KCJGbG9hdDMyYXJyYXkiKTsKICAg
ICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3Bl
Y0Zsb2F0NjRBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiRmxvYXQ2NGFycmF5Iik7CisgICAg
ICAgIG15T3V0LnByaW50KCJGbG9hdDY0YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9w
ID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0Z1bmN0aW9uKQotICAgICAgICBw
dHIuc3RyY2F0KCJGdW5jdGlvbiIpOworICAgICAgICBteU91dC5wcmludCgiRnVuY3Rpb24iKTsK
ICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYg
U3BlY015QXJndW1lbnRzKQotICAgICAgICBwdHIuc3RyY2F0KCJNeWFyZ3VtZW50cyIpOworICAg
ICAgICBteU91dC5wcmludCgiTXlhcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9w
ID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ZvcmVpZ25Bcmd1bWVudHMpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIkZvcmVpZ25hcmd1bWVudHMiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkZvcmVpZ25hcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY1N0cmluZykKLSAgICAgICAgcHRyLnN0cmNhdCgi
U3RyaW5nIik7CisgICAgICAgIG15T3V0LnByaW50KCJTdHJpbmciKTsKICAgICBlbHNlCiAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ludDMyKQotICAg
ICAgICBwdHIuc3RyY2F0KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkludCIpOwogICAg
IGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlUmVhbCkKLSAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOworICAgICAgICBt
eU91dC5wcmludCgiRG91YmxlcmVhbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQotICAgICAgICBwdHIuc3Ry
Y2F0KCJEb3VibGVuYW4iKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZW5hbiIpOwogICAg
IGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVj
Qm9vbGVhbikKLSAgICAgICAgcHRyLnN0cmNhdCgiQm9vbCIpOworICAgICAgICBteU91dC5wcmlu
dCgiQm9vbCIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKICAgICBp
ZiAodmFsdWUgJiBTcGVjT3RoZXIpCi0gICAgICAgIHB0ci5zdHJjYXQoIk90aGVyIik7CisgICAg
ICAgIG15T3V0LnByaW50KCJPdGhlciIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAKLSAgICBpZiAoaXNUb3ApIHsKLSAgICAgICAgcHRyID0gZGVzY3JpcHRpb247Ci0g
ICAgICAgIHB0ci5zdHJjYXQoIlRvcCIpOwotICAgIH0KKyAgICBpZiAoaXNUb3ApCisgICAgICAg
IG91dC5wcmludCgiVG9wIik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQobXlPdXQudG9D
U3RyaW5nKCkpOwogICAgIAogICAgIGlmICh2YWx1ZSAmIFNwZWNFbXB0eSkKLSAgICAgICAgcHRy
LnN0cmNhdCgiRW1wdHkiKTsKLSAgICAKLSAgICAqcHRyKysgPSAwOwotICAgIAotICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKKyAgICAgICAgb3V0LnByaW50KCJFbXB0eSIpOwogfQogCi1jb25zdCBj
aGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcoU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbikKKy8vIFdlIGRvbid0IGV4cG9zZSB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbnlv
bmUgcmVseWluZyBvbiB0aGUgZmFjdCB0aGF0IHRoaXMgbWV0aG9kIGN1cnJlbnRseQorLy8ganVz
dCByZXR1cm5zIHN0cmluZyBjb25zdGFudHMuCitzdGF0aWMgY29uc3QgY2hhciogc3BlY3VsYXRp
b25Ub0FiYnJldmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAg
aWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJu
ICI8RmluYWw+IjsKQEAgLTIxOCw2ICsyMTcsMTEgQEAgY29uc3QgY2hhciogc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaQogICAgIHJldHVybiAiIjsKIH0KIAordm9pZCBkdW1wU3BlY3VsYXRp
b25BYmJyZXZpYXRlZChQcmludFN0cmVhbSYgb3V0LCBTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sK
KyAgICBvdXQucHJpbnQoc3BlY3VsYXRpb25Ub0FiYnJldmlhdGVkU3RyaW5nKHZhbHVlKSk7Cit9
CisKIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbykKIHsKICAgICBpZiAoY2xhc3NJbmZvID09ICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw4ICsyODksMTEg
QEAgaW5saW5lIGJvb2wgaXNFbXB0eVNwZWN1bGF0aW9uKFNwZWN1bGF0ZQogICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjRW1wdHk7CiB9CiAKLWNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9TdHJpbmco
U3BlY3VsYXRlZFR5cGUgdmFsdWUpOwotY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub0FiYnJldmlh
dGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKTsKK3ZvaWQgZHVtcFNwZWN1bGF0aW9uKFBy
aW50U3RyZWFtJiwgU3BlY3VsYXRlZFR5cGUpOwordm9pZCBkdW1wU3BlY3VsYXRpb25BYmJyZXZp
YXRlZChQcmludFN0cmVhbSYsIFNwZWN1bGF0ZWRUeXBlKTsKKworTUFLRV9QUklOVF9BREFQVE9S
KFNwZWN1bGF0aW9uRHVtcCwgU3BlY3VsYXRlZFR5cGUsIGR1bXBTcGVjdWxhdGlvbik7CitNQUtF
X1BSSU5UX0FEQVBUT1IoQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAsIFNwZWN1bGF0ZWRUeXBl
LCBkdW1wU3BlY3VsYXRpb25BYmJyZXZpYXRlZCk7CiAKIC8vIE1lcmdlIHR3byBwcmVkaWN0aW9u
cy4gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGp1c3QgZG9lcyBsZWZ0IHwgcmlnaHQuIEl0IG1h
eQogLy8gc2VlbSB0ZW1wdGluZyB0byBkbyBzbyBkaXJlY3RseSwgYnV0IHlvdSB3b3VsZCBiZSBk
b2luZyBzbyBhdCB5b3VyIG93biBwZXJpbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEyLDEwICsxMTIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewotICAgICAgICBvdXQucHJpbnRmKAotICAg
ICAgICAgICAgInNhbXBsZXMgPSAldSwgcHJlZGljdGlvbiA9ICVzIiwKLSAgICAgICAgICAgIHRv
dGFsTnVtYmVyT2ZTYW1wbGVzKCksCi0gICAgICAgICAgICBzcGVjdWxhdGlvblRvU3RyaW5nKG1f
cHJlZGljdGlvbikpOworICAgICAgICBvdXQucHJpbnQoInNhbXBsZXMgPSAiLCB0b3RhbE51bWJl
ck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0
aW9uKSk7CiAgICAgICAgIG91dC5wcmludGYoIiwgdmFsdWUgPSAiKTsKICAgICAgICAgaWYgKG1f
c2luZ2xldG9uVmFsdWVJc1RvcCkKICAgICAgICAgICAgIG91dC5wcmludGYoIlRPUCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aAkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IFZpcnR1YWxSZWdpc3Rlcl9oCiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDQgKzM4LDEz
IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihWaXJ0dWFsUmVnaXN0ZXIpID0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6VmlydHVhbFJlZ2lzdGVyIHZhbHVlKQoreworICAgIG91
dC5wcmludChzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCiAjZW5kaWYgLy8gVmlydHVhbFJlZ2lzdGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzYwNjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzc0LDcgKzM3NCw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIG91dC5wcmludCgKLSAgICAg
ICAgICAgICIoIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCAiLCAiLCBhcnJheU1vZGVz
VG9TdHJpbmcobV9hcnJheU1vZGVzKSwgIiwgIiwKKyAgICAgICAgICAgICIoIiwgU3BlY3VsYXRp
b25EdW1wKG1fdHlwZSksICIsICIsIGFycmF5TW9kZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpLCAi
LCAiLAogICAgICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUsICIsICIsIG1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoISFtX3ZhbHVlKQogICAgICAgICAgICAg
b3V0LnByaW50KCIsICIsIG1fdmFsdWUuZGVzY3JpcHRpb24oKSk7CkBAIC01MzIsMTUgKzUzMiw2
IEBAIHByaXZhdGU6CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAotbmFtZXNwYWNlIFdU
RiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SlNDOjpERkc6OkFic3RyYWN0VmFsdWUmIHZhbHVlKQotewotICAgIHZhbHVlLmR1bXAob3V0KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAog
I2VuZGlmIC8vIERGR0Fic3RyYWN0VmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjcsOCArMjY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fbGF6eU9wZXJhbmRzLnByZWRpY3Rpb24oCiAgICAgICAgICAgICAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSkpOwogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkxhenkgb3BlcmFu
ZCBbQCV1LCBiYyMldSwgciVkXSBwcmVkaWN0aW9uOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBu
b2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBub2RlLmxvY2FsKCksIHNwZWN1bGF0aW9uVG9TdHJp
bmcocHJlZGljdGlvbikpOworICAgICAgICBkYXRhTG9nKCJMYXp5IG9wZXJhbmQgW0AiLCBub2Rl
SW5kZXgsICIsIGJjIyIsIG1fY3VycmVudEluZGV4LCAiLCByIiwgbm9kZS5sb2NhbCgpLCAiXSBw
cmVkaWN0aW9uOiAiLCBTcGVjdWxhdGlvbkR1bXAocHJlZGljdGlvbiksICJcbiIpOwogI2VuZGlm
CiAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJlZGljdGlvbik7
CiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CkBAIC04ODcsNyArODg2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgIGRhdGFMb2dGKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBzcGVjdWxhdGlvblRvU3RyaW5nKHByZWRpY3Rpb24p
KTsKKyAgICAgICAgZGF0YUxvZygiRHluYW1pYyBbQCIsIG5vZGVJbmRleCwgIiwgYmMjIiwgYnl0
ZWNvZGVJbmRleCwgIl0gcHJlZGljdGlvbjogIiwgU3BlY3VsYXRpb25EdW1wKHByZWRpY3Rpb24p
LCAiXG4iKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTM2MDY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCi0jaW5jbHVkZSA8d3RmL0JvdW5kc0NoZWNrZWRQb2ludGVyLmg+CisjaW5j
bHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKQEAgLTU3LDQ0ICs1Nyw2IEBAIGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5hbWUoTm9kZVR5cGUg
b3ApCiAgICAgcmV0dXJuIGRmZ09wTmFtZXNbb3BdOwogfQogCi1jb25zdCBjaGFyKiBHcmFwaDo6
bmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhKQotewotICAgIC8vIFZhcmlhYmxlcyBhcmUgYWxyZWFkeSBudW1iZXJlZC4gRm9yIHJl
YWRhYmlsaXR5IG9mIElSIGR1bXBzLCB0aGlzIHJldHVybnMKLSAgICAvLyBhbiBhbHBoYWJldGlj
IG5hbWUgZm9yIHRoZSB2YXJpYWJsZSBhY2Nlc3MgZGF0YSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2
ZSB0bwotICAgIC8vIHJlYXNvbiBhYm91dCB0d28gbnVtYmVycyAodmFyaWFibGUgbnVtYmVyIGFu
ZCBsaXZlIHJhbmdlIG51bWJlciksIGJ1dCBpbnN0ZWFkCi0gICAgLy8gYSBudW1iZXIgYW5kIGEg
bGV0dGVyLgotICAgIAotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhYmxl
QWNjZXNzRGF0YS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoJm1fdmFyaWFibGVBY2Nlc3NE
YXRhW2ldID09IHZhcmlhYmxlQWNjZXNzRGF0YSkgewotICAgICAgICAgICAgaW5kZXggPSBpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGlu
ZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgCi0gICAg
aWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJuICJBIjsKLQotICAgIHN0YXRpYyBjaGFyIGJ1Zlsx
MDBdOwotICAgIEJvdW5kc0NoZWNrZWRQb2ludGVyPGNoYXI+IHB0cihidWYsIHNpemVvZihidWYp
KTsKLSAgICAKLSAgICB3aGlsZSAoaW5kZXgpIHsKLSAgICAgICAgKnB0cisrID0gJ0EnICsgKGlu
ZGV4ICUgMjYpOwotICAgICAgICBpbmRleCAvPSAyNjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHZh
cmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQotICAgICAgICAqcHRyKysgPSAnKic7Ci0g
ICAgCi0gICAgcHRyLnN0cmNhdChzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcodmFyaWFi
bGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkpKTsKLSAgICAKLSAgICAqcHRyKysgPSAwOwotICAg
IAotICAgIHJldHVybiBidWY7Ci19Ci0KIHN0YXRpYyB2b2lkIHByaW50V2hpdGVTcGFjZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBhbW91bnQpCiB7CiAgICAgd2hpbGUgKGFtb3VudC0tID4g
MCkKQEAgLTE1Miw4ICsxMTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IEVkZ2UgCiAgICAgb3V0LnByaW50KAogICAgICAgICB1c2VLaW5kVG9TdHJpbmcoZWRnZS51c2VL
aW5kKCkpLAogICAgICAgICAiQCIsIGVkZ2UuaW5kZXgoKSwKLSAgICAgICAgc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKAotICAgICAgICAgICAgYXQoZWRnZSkucHJlZGljdGlvbigpKSk7
CisgICAgICAgIEFiYnJldmlhdGVkU3BlY3VsYXRpb25EdW1wKGF0KGVkZ2UpLnByZWRpY3Rpb24o
KSkpOwogfQogCiB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgTm9kZUluZGV4IG5vZGVJbmRleCkKQEAgLTI2NCw3ICsyMjUsNyBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgaWYgKG5vZGUuaGFzU3RvcmFn
ZUFjY2Vzc0RhdGEoKSkgewogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgc3RvcmFnZUFjY2Vz
c0RhdGEgPSBtX3N0b3JhZ2VBY2Nlc3NEYXRhW25vZGUuc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgp
XTsKICAgICAgICAgb3V0LnByaW50KGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsICJpZCIsIHN0b3Jh
Z2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsICJ7IiwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcikuc3RyaW5nKCksICJ9Iik7Ci0g
ICAgICAgIG91dC5wcmludCgiLCAiLCBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQpOworICAgICAg
ICBvdXQucHJpbnQoIiwgIiwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzdG9yYWdlQWNjZXNzRGF0
YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIEFTU0VS
VChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpID09IG5vZGUuaGFzTG9jYWwoKSk7CkBAIC0y
NzIsOSArMjMzLDkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGludCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5vcGVyYW5kKCk7CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkK
LSAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIiLCAiYXJnIiwgb3Bl
cmFuZFRvQXJndW1lbnQob3BlcmFuZCksICIoIiwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZh
cmlhYmxlQWNjZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpLCAiKCIsIFZh
cmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChoYXNQcmludGVkID8gIiwgIiA6ICIi
LCAiciIsIG9wZXJhbmQsICIoIiwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNj
ZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQoaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgInIiLCBvcGVyYW5kLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZh
cmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KICAgICBpZiAobm9kZS5oYXNDb25zdGFudEJ1ZmZlcigpKSB7CkBAIC0zMjEsOSArMjgyLDkg
QEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogCiAgICAgaWYgKCFz
a2lwcGVkKSB7CiAgICAgICAgIGlmIChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpKQotICAg
ICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhu
b2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91YmxlIiA6
ICIiKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9u
RHVtcChub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91
YmxlIiA6ICIiKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNIZWFwUHJlZGljdGlvbigpKQot
ICAgICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgc3BlY3VsYXRpb25Ub1N0cmlu
Zyhub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICBw
cmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpKTsK
ICAgICB9CiAgICAgCiAgICAgb3V0LnByaW50KCJcbiIpOwpAQCAtNDU5LDcgKzQyMCw5IEBAIHZv
aWQgR3JhcGg6OnByZWRpY3RBcmd1bWVudFR5cGVzKCkKICAgICAgICAgYXQobV9hcmd1bWVudHNb
YXJnXSkudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgICAgIGRhdGFMb2dGKCJBcmd1bWVudCBbJXp1XSBwcmVkaWN0aW9uOiAlc1xuIiwgYXJn
LCBzcGVjdWxhdGlvblRvU3RyaW5nKGF0KG1fYXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJB
cmd1bWVudCBbIiwgYXJnLCAiXSBwcmVkaWN0aW9uOiAiLAorICAgICAgICAgICAgU3BlY3VsYXRp
b25EdW1wKGF0KG1fYXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
aW9uKCkpLCAiXG4iKTsKICNlbmRpZgogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDkgKzMyNyw2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUpOwogICAgIAotICAg
IC8vIFRoaXMgaXMgTyhuKSwgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHZlcmJvc2UgZHVt
cHMuCi0gICAgY29uc3QgY2hhciogbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNj
ZXNzRGF0YSopOwotCiAgICAgdm9pZCBwcmVkaWN0QXJndW1lbnRUeXBlcygpOwogICAgIAogICAg
IFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjAsMTUgKzMyMCw2IEBAIHByaXZhdGU6CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAotbmFtZXNwYWNlIFdURiB7Ci0KLWlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIHZhbHVl
KQotewotICAgIHZhbHVlLmR1bXAob3V0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAogI2VuZGlmIC8vIERGR1N0cnVjdHVyZUFic3RyYWN0
VmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CisKK1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXA6OlZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAoR3JhcGgmIGdyYXBoLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIGRhdGEpCisgICAgOiBt
X2dyYXBoKGdyYXBoKQorICAgICwgbV9kYXRhKGRhdGEpCit7Cit9CisKK3ZvaWQgVmFyaWFibGVB
Y2Nlc3NEYXRhRHVtcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmICgmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YVtpXSA9
PSBtX2RhdGEpIHsKKyAgICAgICAgICAgIGluZGV4ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbmRleCAhPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIAorICAgIGlmICghaW5kZXgpIHsKKyAgICAg
ICAgb3V0LnByaW50KCJhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAo
aW5kZXgpIHsKKyAgICAgICAgb3V0LnByaW50KENoYXJhY3RlckR1bXAoJ0EnICsgKGluZGV4ICUg
MjYpKSk7CisgICAgICAgIGluZGV4IC89IDI2OworICAgIH0KKyAgICAKKyAgICBpZiAobV9kYXRh
LT5pc0NhcHR1cmVkKCkpCisgICAgICAgIG91dC5wcmludCgiKiIpOworCisgICAgb3V0LnByaW50
KEFiYnJldmlhdGVkU3BlY3VsYXRpb25EdW1wKG1fZGF0YS0+cHJlZGljdGlvbigpKSk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wX2gKKyNkZWZpbmUgREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShE
RkdfSklUKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CitjbGFzcyBWYXJpYWJsZUFjY2Vzc0Rh
dGE7CisKK2NsYXNzIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAgeworcHVibGljOgorICAgIFZhcmlh
YmxlQWNjZXNzRGF0YUR1bXAoR3JhcGgmLCBWYXJpYWJsZUFjY2Vzc0RhdGEqKTsKKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHcmFwaCYg
bV9ncmFwaDsKKyAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG1fZGF0YTsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYg
Ly8gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcF9oCisKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYwODQp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVm
ZmVyW3RoaW5neV0gaWRpb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgor
CisgICAgICAgIEFkZGVkIGEgU3RyaW5nUHJpbnRTdHJlYW0sIGFuZCBtYWRlIGl0IGVhc3kgdG8g
Y3JlYXRlIGR1bXBlcnMgZm9yIHR5cGVkZWZzIHRvIHByaW1pdGl2ZXMuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBpOgorICAgICAgICAqIFdURi5w
cm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpkdW1wQ2hhcmFjdGVy
KToKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjpTdHJpbmdQcmludFN0cmVhbSk6CisgICAgICAg
IChXVEY6OlN0cmluZ1ByaW50U3RyZWFtOjp+U3RyaW5nUHJpbnRTdHJlYW0pOgorICAgICAgICAo
V1RGOjpTdHJpbmdQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6OlN0cmluZ1By
aW50U3RyZWFtOjp0b0NTdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmdQcmludFN0cmVhbTo6
aW5jcmVhc2VTaXplKToKKyAgICAgICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaDogQWRkZWQu
CisgICAgICAgIChTdHJpbmdQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OnRvQ1N0cmluZyk6
CisKIDIwMTItMTEtMjggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIFN0cmluZyBTdGF0cyBmb3IgcmVjZW50IGRhdGFMb2cgY2hhbmdlcyBhbmQg
YWRkIHN1bW1hcnkKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjA2OSkK
KysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDYgKzE1OSw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaCBcCiAgICAgU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1N0cmluZ0V4dHJhcy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9U
Q1BhY2tlZENhY2hlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1RDUGFnZU1hcC5oIFwKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYuZ3lwaQko
cmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL1dURi9XVEYuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtOTksNiArOTksNyBAQAogICAgICAgICAgICAgJ3d0Zi9TdGRMaWJFeHRyYXMuaCcsCiAgICAg
ICAgICAgICAnd3RmL1N0cmluZ0V4dHJhcy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nSGFz
aGVyLmgnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oJywKICAgICAgICAg
ICAgICd3dGYvVGVtcG9yYXJ5Q2hhbmdlLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oJywKQEAgLTIwMCw2ICsyMDEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9TaXplTGltaXRzLmNw
cCcsCiAgICAgICAgICAgICAnd3RmL1N0YWNrQm91bmRzLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L1N0cmluZ0V4dHJhcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdQcmludFN0cmVhbS5j
cHAnLAogICAgICAgICAgICAgJ3d0Zi9UQ1BhY2tlZENhY2hlLmgnLAogICAgICAgICAgICAgJ3d0
Zi9UQ1BhZ2VNYXAuaCcsCiAgICAgICAgICAgICAnd3RmL1RDU3BpbkxvY2suaCcsCkluZGV4OiBT
b3VyY2UvV1RGL1dURi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYucHJvCShyZXZp
c2lvbiAxMzYwNjkpCisrKyBTb3VyY2UvV1RGL1dURi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE0
Niw2ICsxNDYsNyBAQCBIRUFERVJTICs9IFwKICAgICBTdGRMaWJFeHRyYXMuaCBcCiAgICAgU3Ry
aW5nRXh0cmFzLmggXAogICAgIFN0cmluZ0hhc2hlci5oIFwKKyAgICBTdHJpbmdQcmludFN0cmVh
bS5oIFwKICAgICBUQ1BhY2tlZENhY2hlLmggXAogICAgIFRDU3BpbkxvY2suaCBcCiAgICAgVENT
eXN0ZW1BbGxvYy5oIFwKQEAgLTIzNSw2ICsyMzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBSZWZD
b3VudGVkTGVha0NvdW50ZXIuY3BwIFwKICAgICBTSEExLmNwcCBcCiAgICAgU3RhY2tCb3VuZHMu
Y3BwIFwKKyAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAgXAogICAgIFRDU3lzdGVtQWxsb2MuY3Bw
IFwKICAgICBUaHJlYWRpbmcuY3BwIFwKICAgICBUeXBlVHJhaXRzLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dU
Ri52Y3Byb2ovV1RGLnZjcHJvagkocmV2aXNpb24gMTM2MDY5KQorKysgU291cmNlL1dURi9XVEYu
dmNwcm9qL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMTMsNiArMTIxMywxNCBAQAog
CQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxTdHJpbmdQ
cmludFN0cmVhbS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0
aD0iLi5cd3RmXFN0cmluZ1ByaW50U3RyZWFtLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUK
IAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFRDUGFja2VkQ2FjaGUuaCIKIAkJCT4KIAkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMzYwNjkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4
NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVFMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9OwogCQkwRkQ4MUFDNTE1NEZCMjJFMDA5ODNF
NzIgLyogRmFzdEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkwRkREQkZBNzE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmlu
Z1ByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0
cmluZ1ByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAq
LzsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUQxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkxNEYzQjBGNzE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0
dXJhdGVkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwpAQCAtMzI1LDYgKzMyNyw4
IEBACiAJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludFN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyog
RmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0
VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRERCRkE1MTY2NkRGQTMw
MEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcmludFN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSQU1TaXpl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBGOTAwREI1
MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUkFNU2l6
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYzQjBGNjE1RTQ1RTQ2MDAyMTAw
NjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTYXR1cmF0ZWRBcml0aG1ldGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MzcsNiArODQxLDggQEAKIAkJCQlBOEE0NzMxMjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
RXh0cmFzLmNwcCAqLywKIAkJCQlBOEE0NzMxMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nRXh0
cmFzLmggKi8sCiAJCQkJQThBNDczMTQxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0hhc2hlci5o
ICovLAorCQkJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgKi8sCisJCQkJMEZEREJGQTYxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFt
LmggKi8sCiAJCQkJQThBNDczMTUxNTFBODI1QjAwNDEyM0ZGIC8qIFRDUGFja2VkQ2FjaGUuaCAq
LywKIAkJCQlBOEE0NzMxNjE1MUE4MjVCMDA0MTIzRkYgLyogVENQYWdlTWFwLmggKi8sCiAJCQkJ
QThBNDczMTcxNTFBODI1QjAwNDEyM0ZGIC8qIFRDU3BpbkxvY2suaCAqLywKQEAgLTEyNDEsNiAr
MTI0Nyw3IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVh
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50
U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyog
UmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVG
IC8qIFN0cmluZ1ByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE0MTEsNiArMTQxOCw3
IEBACiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgU0VUKFdURl9IRUFERVJT
CiAgICAgU3RkTGliRXh0cmFzLmgKICAgICBTdHJpbmdFeHRyYXMuaAogICAgIFN0cmluZ0hhc2hl
ci5oCisgICAgU3RyaW5nUHJpbnRTdHJlYW0uaAogICAgIFRDUGFja2VkQ2FjaGUuaAogICAgIFRD
UGFnZU1hcC5oCiAgICAgVENTcGluTG9jay5oCkBAIC0xODQsNiArMTg1LDcgQEAgU0VUKFdURl9T
T1VSQ0VTCiAgICAgU0hBMS5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKICAgICBTdHJpbmdFeHRy
YXMuY3BwCisgICAgU3RyaW5nUHJpbnRTdHJlYW0uY3BwCiAgICAgVGhyZWFkaW5nLmNwcAogICAg
IFR5cGVUcmFpdHMuY3BwCiAgICAgV1RGVGhyZWFkRGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5jcHAJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDUgKzExNSwxMCBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgUmF3CiAgICAgb3V0LnByaW50ZigiJXAiLCB2YWx1ZS52YWx1
ZSgpKTsKIH0KIAordm9pZCBkdW1wQ2hhcmFjdGVyKFByaW50U3RyZWFtJiBvdXQsIGNoYXIgdmFs
dWUpCit7CisgICAgb3V0LnByaW50ZigiJWMiLCB2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDEzNjA2OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsOSBA
QCBwdWJsaWM6CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKik7
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBDU3RyaW5nJik7CiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBTdHJpbmcmKTsKK2lubGluZSB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY2hhciogdmFsdWUpIHsgcHJpbnRJbnRl
cm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih2YWx1ZSkpOyB9CitpbmxpbmUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIENTdHJpbmcmIHZhbHVlKSB7IHByaW50
SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBDU3RyaW5nJj4odmFsdWUpKTsgfQoraW5s
aW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTdHJpbmcmIHZhbHVlKSB7
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBTdHJpbmcmPih2YWx1ZSkpOyB9
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBib29sKTsKIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIGludCk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCk7CkBAIC0xNzEsOCArMTc0LDUxIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIGZsb2F0KTsKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGRvdWJs
ZSk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBSYXdQb2ludGVyKTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBUJiB2YWx1ZSkKK3sKKyAgICB2YWx1ZS5kdW1wKG91dCk7Cit9CisKKyNkZWZpbmUgTUFL
RV9QUklOVF9BREFQVE9SKE5hbWUsIFR5cGUsIGZ1bmN0aW9uKSBcCisgICAgY2xhc3MgTmFtZSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTmFtZShjb25zdCBUeXBlJiB2
YWx1ZSkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCAgICAg
ICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIGZ1bmN0aW9uKG91dCwgbV92YWx1ZSk7ICAgICAgICAgICAgICBcCisgICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHByaXZh
dGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgVHlwZSBt
X3ZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIE1B
S0VfUFJJTlRfTUVUSE9EX0FEQVBUT1IoTmFtZSwgVHlwZSwgbWV0aG9kKSBcCisgICAgY2xhc3Mg
TmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTmFtZShjb25zdCBU
eXBlJiB2YWx1ZSkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA6IG1fdmFsdWUodmFs
dWUpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dCAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIG1fdmFsdWUubWV0aG9kKG91dCk7ICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
VHlwZSBtX3ZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisvLyBV
c2UgYW4gYWRhcHRvci1iYXNlZCBkdW1wZXIgZm9yIGNoYXJhY3RlcnMgdG8gYXZvaWQgc2l0dWF0
aW9ucyB3aGVyZQorLy8geW91J3ZlICJjb21wcmVzc2VkIiBhbiBpbnRlZ2VyIHRvIGEgY2hhcmFj
dGVyIGFuZCBpdCBlbmRzIHVwIHByaW50aW5nCisvLyBhcyBBU0NJSSB3aGVuIHlvdSB3YW50ZWQg
aXQgdG8gcHJpbnQgYXMgYSBudW1iZXIuCit2b2lkIGR1bXBDaGFyYWN0ZXIoUHJpbnRTdHJlYW0m
LCBjaGFyKTsKK01BS0VfUFJJTlRfQURBUFRPUihDaGFyYWN0ZXJEdW1wLCBjaGFyLCBkdW1wQ2hh
cmFjdGVyKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6Q2hhcmFjdGVyRHVt
cDsKIHVzaW5nIFdURjo6UHJpbnRTdHJlYW07CiAKICNlbmRpZiAvLyBQcmludFN0cmVhbV9oCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0uaCIKKworI2lu
Y2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1N0cmluZ1ByaW50U3RyZWFtOjpTdHJpbmdQ
cmludFN0cmVhbSgpCisgICAgOiBtX2J1ZmZlcihtX2lubGluZUJ1ZmZlcikKKyAgICAsIG1fbmV4
dCgwKQorICAgICwgbV9zaXplKHNpemVvZihtX2lubGluZUJ1ZmZlcikpCit7CisgICAgbV9idWZm
ZXJbMF0gPSAwOyAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIG51bGwgdGVybWlu
YXRvci4KK30KKworU3RyaW5nUHJpbnRTdHJlYW06On5TdHJpbmdQcmludFN0cmVhbSgpCit7Cisg
ICAgaWYgKG1fYnVmZmVyID09IG1faW5saW5lQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAg
ZmFzdEZyZWUobV9idWZmZXIpOworfQorCit2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjp2cHJpbnRm
KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQoreworICAgIEFTU0VSVChtX25l
eHQgPCBtX3NpemUpOworICAgIEFTU0VSVCghbV9idWZmZXJbbV9uZXh0XSk7CisgICAgCisgICAg
dmFfbGlzdCBmaXJzdFBhc3NBcmdMaXN0OworI2lmIE9TKFdJTkRPV1MpCisgICAgZmlyc3RQYXNz
QXJnTGlzdCA9IGFyZ0xpc3Q7CisjZWxzZQorICAgIHZhX2NvcHkoZmlyc3RQYXNzQXJnTGlzdCwg
YXJnTGlzdCk7CisjZW5kaWYKKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRlc05vdEluY2x1ZGlu
Z1Rlcm1pbmF0b3JUaGF0V291bGRIYXZlQmVlbldyaXR0ZW4gPQorICAgICAgICB2c25wcmludGYo
bV9idWZmZXIgKyBtX25leHQsIG1fc2l6ZSAtIG1fbmV4dCwgZm9ybWF0LCBmaXJzdFBhc3NBcmdM
aXN0KTsKKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRlc1RoYXRXb3VsZEhhdmVCZWVuV3JpdHRl
biA9CisgICAgICAgIG51bWJlck9mQnl0ZXNOb3RJbmNsdWRpbmdUZXJtaW5hdG9yVGhhdFdvdWxk
SGF2ZUJlZW5Xcml0dGVuICsgMTsKKyAgICAKKyAgICBpZiAobV9uZXh0ICsgbnVtYmVyT2ZCeXRl
c1RoYXRXb3VsZEhhdmVCZWVuV3JpdHRlbiA8PSBtX3NpemUpIHsKKyAgICAgICAgbV9uZXh0ICs9
IG51bWJlck9mQnl0ZXNOb3RJbmNsdWRpbmdUZXJtaW5hdG9yVGhhdFdvdWxkSGF2ZUJlZW5Xcml0
dGVuOworICAgICAgICByZXR1cm47IC8vIFRoaXMgbWVhbnMgdGhhdCB2c25wcmludGYoKSBzdWNj
ZWVkZWQuCisgICAgfQorICAgIAorICAgIGluY3JlYXNlU2l6ZShtX25leHQgKyBudW1iZXJPZkJ5
dGVzVGhhdFdvdWxkSGF2ZUJlZW5Xcml0dGVuKTsKKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRl
c05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0V2VyZVdyaXR0ZW4gPQorICAgICAgICB2c25wcmlu
dGYobV9idWZmZXIgKyBtX25leHQsIG1fc2l6ZSAtIG1fbmV4dCwgZm9ybWF0LCBhcmdMaXN0KTsK
KyAgICAKKyAgICBpbnQgbnVtYmVyT2ZCeXRlc1RoYXRXZXJlV3JpdHRlbiA9IG51bWJlck9mQnl0
ZXNOb3RJbmNsdWRpbmdUZXJtaW5hdG9yVGhhdFdlcmVXcml0dGVuICsgMTsKKyAgICAKKyAgICBB
U1NFUlRfVU5VU0VEKG51bWJlck9mQnl0ZXNUaGF0V2VyZVdyaXR0ZW4sIG1fbmV4dCArIG51bWJl
ck9mQnl0ZXNUaGF0V2VyZVdyaXR0ZW4gPD0gbV9zaXplKTsKKyAgICAKKyAgICBtX25leHQgKz0g
bnVtYmVyT2ZCeXRlc05vdEluY2x1ZGluZ1Rlcm1pbmF0b3JUaGF0V2VyZVdyaXR0ZW47CisgICAg
CisgICAgQVNTRVJUKG1fbmV4dCA8IG1fc2l6ZSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlclttX25l
eHRdKTsKK30KKworQ1N0cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9DU3RyaW5nKCkKK3sKKyAg
ICBBU1NFUlQobV9uZXh0ID09IHN0cmxlbihtX2J1ZmZlcikpOworICAgIHJldHVybiBDU3RyaW5n
KG1fYnVmZmVyLCBtX25leHQpOworfQorCit2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjppbmNyZWFz
ZVNpemUoc2l6ZV90IG5ld1NpemUpCit7CisgICAgQVNTRVJUKG5ld1NpemUgPiBtX3NpemUpOwor
ICAgIEFTU0VSVChuZXdTaXplID4gc2l6ZW9mKG1faW5saW5lQnVmZmVyKSk7CisgICAgCisgICAg
Ly8gVXNlIGV4cG9uZW50aWFsIHJlc2l6aW5nIHRvIHJlZHVjZSB0aHJhc2hpbmcuCisgICAgbV9z
aXplID0gbmV3U2l6ZSA8PCAxOworICAgIAorICAgIC8vIFVzZSBmYXN0TWFsbG9jIGluc3RlYWQg
b2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBrbm93IHRoYXQgZm9yIHRoZSBzaXplcyB3ZSdyZSB1
c2luZywKKyAgICAvLyBmYXN0UmVhbGxvYyB3aWxsIGp1c3QgZG8gbWFsbG9jK2ZyZWUgYW55d2F5
LiBBbHNvLCB0aGlzIHNpbXBsaWZpZXMgdGhlIGNvZGUgc2luY2UKKyAgICAvLyB3ZSBjYW4ndCBy
ZWFsbG9jIHRoZSBpbmxpbmUgYnVmZmVyLgorICAgIGNoYXIqIG5ld0J1ZmZlciA9IHN0YXRpY19j
YXN0PGNoYXIqPihmYXN0TWFsbG9jKG1fc2l6ZSkpOworICAgIG1lbWNweShuZXdCdWZmZXIsIG1f
YnVmZmVyLCBtX25leHQgKyAxKTsKKyAgICBpZiAobV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIp
CisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0cmluZ1By
aW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTdHJpbmdQcmludFN0cmVhbV9oCisjZGVmaW5l
IFN0cmluZ1ByaW50U3RyZWFtX2gKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0
cmluZ1ByaW50U3RyZWFtIDogcHVibGljIFByaW50U3RyZWFtIHsKK3B1YmxpYzoKKyAgICBTdHJp
bmdQcmludFN0cmVhbSgpOworICAgIH5TdHJpbmdQcmludFN0cmVhbSgpOworICAgIAorICAgIHZp
cnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJ
QlVURV9QUklOVEYoMiwgMCk7CisgICAgCisgICAgQ1N0cmluZyB0b0NTdHJpbmcoKTsKKyAgICAK
K3ByaXZhdGU6CisgICAgdm9pZCBpbmNyZWFzZVNpemUoc2l6ZV90KTsKKyAgICAKKyAgICBjaGFy
KiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9uZXh0OworICAgIHNpemVfdCBtX3NpemU7CisgICAg
Y2hhciBtX2lubGluZUJ1ZmZlclsxMjhdOworfTsKKworLy8gU3RyaW5naWZ5IGFueSB0eXBlIFQg
dGhhdCBoYXMgYSBXVEY6OnByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBUJikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitDU3RyaW5nIHRvQ1N0cmluZyhjb25zdCBUJiB2YWx1ZSkKK3sK
KyAgICBTdHJpbmdQcmludFN0cmVhbSBzdHJlYW07CisgICAgc3RyZWFtLnByaW50KHZhbHVlKTsK
KyAgICByZXR1cm4gc3RyZWFtLnRvQ1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwordXNpbmcgV1RGOjpTdHJpbmdQcmludFN0cmVhbTsKK3VzaW5nIFdURjo6dG9DU3RyaW5nOwor
CisjZW5kaWYgLy8gU3RyaW5nUHJpbnRTdHJlYW1faAorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>