<?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>159336</bug_id>
          
          <creation_ts>2016-07-01 02:01:02 -0700</creation_ts>
          <short_desc>Cleanup of MathML headers</short_desc>
          <delta_ts>2016-07-14 11:00:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>WebKit 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>
          <dependson>153991</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rego</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207034</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-01 02:01:02 -0700</bug_when>
    <thetext>Another small refactoring we can do after https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase1 is improving the inheritance and visibility in MathML element and renderer classes. The hierarchy as changed a lot and these are not always respected:

* Use final for class that are not extended.
* Use final instead of override for virtual members that are not overridden by derived classes.
* Try and reduce the visibility of function members to private or protected as appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210938</commentid>
    <comment_count>1</comment_count>
      <attachid>283627</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-14 01:50:51 -0700</bug_when>
    <thetext>Created attachment 283627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211018</commentid>
    <comment_count>2</comment_count>
      <attachid>283627</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-14 09:51:18 -0700</bug_when>
    <thetext>Comment on attachment 283627
Patch

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

r- with prejudice

(j/k, but, in all seriousness, #pragma once is used *instead* of header guards, not in addition to them!

Otherwise nice cleanup.

&gt; Source/WebCore/ChangeLog:9
&gt; +        - Use #pragma once

Nice!

&gt; Source/WebCore/mathml/MathMLElement.h:30
&gt;  #ifndef MathMLElement_h
&gt;  #define MathMLElement_h
&gt; +#pragma once

...

NOOOooooooo!

&gt; Source/WebCore/mathml/MathMLInlineContainerElement.h:29
&gt;  #ifndef MathMLInlineContainerElement_h
&gt;  #define MathMLInlineContainerElement_h
&gt; +#pragma once

:(

&gt; Source/WebCore/mathml/MathMLMathElement.h:29
&gt;  #ifndef MathMLMathElement_h
&gt;  #define MathMLMathElement_h
&gt; +#pragma once

&lt;weeps&gt;

&gt; Source/WebCore/mathml/MathMLMencloseElement.h:29
&gt;  #ifndef MathMLMencloseElement_h
&gt;  #define MathMLMencloseElement_h
&gt; +#pragma once

etc etc etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211022</commentid>
    <comment_count>3</comment_count>
      <attachid>283655</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-14 10:05:28 -0700</bug_when>
    <thetext>Created attachment 283655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211055</commentid>
    <comment_count>4</comment_count>
      <attachid>283655</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-14 11:00:06 -0700</bug_when>
    <thetext>Comment on attachment 283655
Patch

Clearing flags on attachment: 283655

Committed r203228: &lt;http://trac.webkit.org/changeset/203228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211056</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-14 11:00:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283627</attachid>
            <date>2016-07-14 01:50:51 -0700</date>
            <delta_ts>2016-07-14 10:05:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159336-20160714105004.patch</filename>
            <type>text/plain</type>
            <size>27386</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjZjY5NDRlZDZkOGNk
NjEwMTc0ZjBkMzg3NTJiOGM3Y2E5NjljNy4uOGMyZTYzOWZlZjkzOWJiODMyNWUzZDQ5MTY5ODBk
ODU5N2RkN2Y1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA3LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgQ2xlYW51cCBvZiBNYXRo
TUwgaGVhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZG8gc29tZSBjbGVhbnVwIGluIE1hdGhNTCBoZWFkZXJzOgorICAgICAgICAtIFVzZSAj
cHJhZ21hIG9uY2UKKyAgICAgICAgLSBVc2UgZmluYWwgZm9yIGNsYXNzIHRoYXQgYXJlIG5vdCBl
eHRlbmRlZC4KKyAgICAgICAgLSBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZSBmb3Igdmly
dHVhbCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBvdmVycmlkZGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4K
KyAgICAgICAgLSBUcnkgYW5kIHJlZHVjZSB0aGUgdmlzaWJpbGl0eSBvZiBmdW5jdGlvbiBtZW1i
ZXJzIHRvIHByaXZhdGUgb3IgcHJvdGVjdGVkIGFzIGFwcHJvcHJpYXRlLgorICAgICAgICAtIFJl
bW92ZSB1c2VsZXNzICNpbmNsdWRlCisgICAgICAgIC0gUmVtb3ZlIHVzZWxlc3MgY2xhc3Mgb3Ig
ZnJpZW5kc2hpcCBkZWNsYXJhdGlvbgorICAgICAgICAtIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25z
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MUGFkZGVkRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50
Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0
aE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpSZW5kZXJN
YXRoTUxSb3cpOiBEZWxldGVkLiBXZSBubyBsb25nZXIgY3JlYXRlIGFub255bW91cyByb3cuCisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmg6CisKIDIwMTYtMDctMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb2Rlcm5pemUgV2ViU29ja2V0IGhhbmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggMjE2Y2VjNjUxNWFmNzhm
MjEzYTNlMzQ0NzA4MGQyMmFlOTRlMmIzNi4uYTBmM2IxNjUwMjgyMDVlZGEyNjE2ZWIyNGM1M2U5
NGIyMmUzOWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZm5kZWYgTWF0aE1MRWxlbWVudF9oCiAjZGVmaW5lIE1hdGhNTEVsZW1l
bnRfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAppbmRleCBh
NTg5NWVmYzkyY2I0OWRmZGM4MDM0YmY0YmYwNTgzMjg2YTNkZDhkLi5hNjgzMGRkMjUzODRlNGNk
MTY2NzAyNGI3YzFiYmJmMzI2NWRjODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2lmbmRlZiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50X2gKICNkZWZpbmUgTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwp
CiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpAQCAtMzYsOCArMzcsNiBAQCBjbGFzcyBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50IDogcHVibGljIE1hdGhNTEVsZW1lbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICBib29sIGlzUHJl
c2VudGF0aW9uTWF0aE1MKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcm90
ZWN0ZWQ6CiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CkBAIC00NSw2ICs0NCw3IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0
aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCmlu
ZGV4IDkyZjE4MDI5MGI5OGE3MGM3OWU2Y2IwMWU1NDllZGZhM2EyMWE2ZDguLmFlODFkYTJiZmIx
MjZjZmMxYjhmMTJkMTlkNTQ2NTA5MjVmMGNmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5oCkBAIC0yNiwyNCArMjYsMjMgQEAKIAogI2lmbmRlZiBNYXRoTUxN
YXRoRWxlbWVudF9oCiAjZGVmaW5lIE1hdGhNTE1hdGhFbGVtZW50X2gKKyNwcmFnbWEgb25jZQog
CiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWF0aE1MTWF0aEVsZW1lbnQg
OiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CitjbGFzcyBNYXRoTUxNYXRo
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTE1hdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQg
ZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCmluZGV4IGM0ZmNmMzNjYmRlZTIwNmY4NzY1MzM3
ODMzOTIzNjdlNzE3NjIxYjUuLjllYWZlODNkNTIyMzhkNjZkYTk3Nzc5ZDU4MjdjZWJhOTRlMjlj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmbmRlZiBNYXRoTUxNZW5jbG9zZUVsZW1lbnRfaAogI2Rl
ZmluZSBNYXRoTUxNZW5jbG9zZUVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TUFUSE1MKQogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTWF0aE1MTWVuY2xvc2VFbGVtZW50IGZpbmFsOiBwdWJsaWMgTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNYXRo
TUxNZW5jbG9zZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYpOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCiAgICAgZW51bSBNZW5jbG9zZU5vdGF0aW9u
RmxhZyB7CiAgICAgICAgIExvbmdEaXYgPSAxIDw8IDEsCkBAIC01OSw2ICs1OSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBjbGVhck5vdGF0aW9ucygpIHsgbV9ub3Rh
dGlvbkZsYWdzID0gMDsgfQogICAgIHZvaWQgYWRkTm90YXRpb24oTWVuY2xvc2VOb3RhdGlvbkZs
YWcgbm90YXRpb25GbGFnKSB7IG1fbm90YXRpb25GbGFncyB8PSBub3RhdGlvbkZsYWc7IH0KICAg
ICB1bnNpZ25lZCBzaG9ydCBtX25vdGF0aW9uRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmgKaW5kZXggZTljNGVmNjkwYTA4OTVmNzM1
MmNlNzJlZmFkODI2NGMxZTAzOWQ0NS4uY2RkM2IxYTdiMTE5YzgwM2Y0YzVkNzc2ZDQxZWJiY2Fi
ZjI3YzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaWZuZGVmIE1hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeV9oCiAjZGVmaW5lIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeV9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UGFkZGVkRWxlbWVudC5oCmluZGV4IDBkYzk2OTY2N2E2MzE0MzE4MzIwYTBiZGM5NDBiOTE1ODU0
Yjc5OWUuLmM0NTRlODRlYTllNzY2MDgyMzY4YjViZWI3Zjc4NjE2Yzg5MjhkZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjaWZuZGVmIE1hdGhNTFBhZGRlZEVsZW1lbnRfaAogI2RlZmluZSBNYXRoTUxQYWRkZWRF
bGVtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNlbGVjdEVsZW1lbnQuaAppbmRleCBmMWE0NGVkOWE2MTUxZWZjYzA0NjEwZDc2YjZkMjVm
NmQ0ZWY4NzM0Li5jNWU5NmI3NTI0NTc2MDg5NWZkYzBiMGQ1YTYzN2U3M2U4OTVkMDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2lmbmRlZiBNYXRoTUxTZWxlY3RFbGVtZW50X2gKICNkZWZpbmUgTWF0aE1MU2Vs
ZWN0RWxlbWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVk
ZSAiTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIgpAQCAtNDAsMjIgKzQxLDIyIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOwogCi0gICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgZmluYWw7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiA9IE1vZGlm
aWVkRGlyZWN0bHkpIGZpbmFsOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IGZpbmFsOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBmaW5hbDsK
IAogICAgIHZvaWQgdG9nZ2xlKCk7CiAgICAgaW50IGdldFNlbGVjdGVkQWN0aW9uQ2hpbGRBbmRJ
bmRleChFbGVtZW50KiYgc2VsZWN0ZWRDaGlsZCk7CiAgICAgRWxlbWVudCogZ2V0U2VsZWN0ZWRB
Y3Rpb25DaGlsZCgpOwogICAgIEVsZW1lbnQqIGdldFNlbGVjdGVkU2VtYW50aWNzQ2hpbGQoKTsK
IAotICAgIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0ZWRDaGlsZCgpIGZpbmFsOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3NlbGVjdGVk
Q2hpbGQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3Bh
Y2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgK
aW5kZXggMGY4ZTE2ODVmODJlZjI4NDdmOGNhYjllZDczYjNkNGUzNWRjZTExZC4uNDE3NDIxMGY3
MWE2ZTE3MWIxN2IzMmQ1M2I5YmYwNzAzMDQ2OTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaWZuZGVmIE1hdGhN
TFNwYWNlRWxlbWVudF9oCiAjZGVmaW5lIE1hdGhNTFNwYWNlRWxlbWVudF9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAppbmRleCBiYjJiYjA3MWQ3MjYz
YmRiMmE2MDVmY2FmZjNjMzU2N2YyMjgwN2U3Li5jOWU0ZTY3MmE5OTA0Y2RjMGU0OGQzODliMjlk
YjkxN2U4ZjM1MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQu
aApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWZuZGVmIE1hdGhNTFRleHRFbGVtZW50X2gKICNkZWZp
bmUgTWF0aE1MVGV4dEVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1M
KQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKQEAgLTM1LDE4ICszNiwxOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBNYXRoTUxUZXh0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRo
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTFRleHRFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAgICB2b2lk
IGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc1ByZXNlbnRhdGlv
bk1hdGhNTCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAg
ICBNYXRoTUxUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAg
ICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBmaW5hbDsKKwor
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CisgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgZmluYWw7CisgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKIAotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL01hdGhPcGVyYXRvci5oCmluZGV4IDYwYzY0Njk3OGI2YzlmZTBmNTY4ZGFlMWM2
ZjY4YTk3MzM2N2ExNWMuLjEwZjEzNjUyMmM4OWRhYWNlZjdlODY0YTRmZDc5NzYwMzg4ODM5NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjaWZuZGVmIE1hdGhPcGVyYXRvcl9oCiAjZGVmaW5lIE1hdGhP
cGVyYXRvcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVkZSAi
R2x5cGhQYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKaW5kZXggOWIzYjNlMWEzODY3NTViZjczNzZlMGRhZTdjOTM0YTQ4
YjhiNmUxYy4uMzE5ODUzMzllMGMyNWFjMzFlZGZmNThjNDNlYjYwYjI3NGZlZTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWZuZGVmIFJlbmRlck1hdGhNTEJsb2NrX2gKICNkZWZp
bmUgUmVuZGVyTWF0aE1MQmxvY2tfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1M
KQogCkBAIC0xMDQsMTMgKzEwNSwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE1h
dGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWF0aE1M
U3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIGlz
UmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxUYWJsZSI7IH0KKyAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxUYWJsZSI7IH0KKyAgICBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1f
bWF0aE1MU3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKaW5kZXggYmNiYmNlMTdlYmU3NzZlZmI3ODc3ZDI2M2Ux
YzI4Nzk4M2QzNTFlMy4uZDA1NmYwNWUwNmFiN2QxYWM4MWVmMjA1MjRkOTE3NTkwZWI1NzJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZlbmNlZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpZm5kZWYgUmVuZGVyTWF0aE1MRmVuY2Vk
X2gKICNkZWZpbmUgUmVuZGVyTWF0aE1MRmVuY2VkX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5B
QkxFKE1BVEhNTCkKIApAQCAtNDAsMTAgKzQxLDEwIEBAIHB1YmxpYzoKICAgICBNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJp
dmF0ZToKLSAgICBib29sIGlzUmVuZGVyTWF0aE1MRmVuY2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIjsgfQotICAgIHZvaWQgYWRkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSZW5kZXJN
YXRoTUxGZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGZW5jZWQi
OyB9CisgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7
CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+IGNyZWF0ZU1hdGhNTE9wZXJh
dG9yKGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6Rm9ybSwgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKICAgICB2b2lkIG1ha2VG
ZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCBjYTE3NjFkZWU4OWFiYTgxMmZlOGM1N2Y2NmJhN2U5
OTczMzM0MDEzLi5kOGYzYjEyYjA0NmQ1ZGFlZTIyZTc5YjM2ZTdhNGZkZjRkNGNjMzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZm5kZWYgUmVuZGVyTWF0aE1MRnJhY3Rp
b25faAogI2RlZmluZSBSZW5kZXJNYXRoTUxGcmFjdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lm
IEVOQUJMRShNQVRITUwpCiAKQEAgLTQyLDE2ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAg
ICAgZmxvYXQgcmVsYXRpdmVMaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
TGluZVRoaWNrbmVzcyA/IG1fbGluZVRoaWNrbmVzcyAvIG1fZGVmYXVsdExpbmVUaGlja25lc3Mg
OiBMYXlvdXRVbml0KDApOyB9CiAKLSAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwogICAgIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBmaW5hbDsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBib29s
IGlzUmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxGcmFjdGlvbiI7IH0KIAorICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKSBmaW5hbDsKKyAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwogICAgIE9wdGlvbmFsPGlu
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaAppbmRleCAwZTI3MjlkYjQxODY2
NjZiN2UwYzlmZWQwODkyYTAzZjdjZWNmZjMzLi4zYmU2YTU0MzZkOGI2ZDk0NDI0OGY2YzNkMWRj
NjQwODcyZTI1YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaWZuZGVmIFJlbmRlck1h
dGhNTE1hdGhfaAogI2RlZmluZSBSZW5kZXJNYXRoTUxNYXRoX2gKKyNwcmFnbWEgb25jZQogCiAj
aWYgRU5BQkxFKE1BVEhNTCkKIApAQCAtMzcsOCArMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
TWF0aE1MTWF0aChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6Ci0gICAgYm9v
bCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJNYXRoTUxNYXRoIjsgfQorICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWF0aCI7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaApp
bmRleCAyNGZiOWY4ZjRjYTllY2UzMzRmYzcyODg0NDBlNWU2ZDJiNTBkYTBjLi4wMTBmMDg5ZTY5
MTBjMGMyOTY2MzQxZTM1MTM0ZmY1YTYwNDcxZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpZm5kZWYgUmVuZGVyTWF0aE1MTWVuY2xvc2VfaAogI2RlZmluZSBSZW5kZXJN
YXRoTUxNZW5jbG9zZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5j
bHVkZSAiTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggODllYWRiMWY5
NGYwMzk3NzExZTI2NDQ1YjFkOTkwMDgzOGViYWU1NC4uZGI3Zjg0YTMzYTAwOTczOTgyM2ViMzVj
OWNkZmUwMzk2NTAzNGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtMjUsMjAgKzI1LDE4IEBACiAKICNp
Zm5kZWYgUmVuZGVyTWF0aE1MT3BlcmF0b3JfaAogI2RlZmluZSBSZW5kZXJNYXRoTUxPcGVyYXRv
cl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKLSNpbmNsdWRlICJGb250
LmgiCi0jaW5jbHVkZSAiR2x5cGhQYWdlLmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgog
I2luY2x1ZGUgIk1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIk1hdGhPcGVy
YXRvci5oIgotI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJN
YXRoTUxUb2tlbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlck1hdGhN
TE9wZXJhdG9yIDogcHVibGljIFJlbmRlck1hdGhNTFRva2VuIHsKK2NsYXNzIFJlbmRlck1hdGhN
TE9wZXJhdG9yIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFRva2VuIHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBT
dHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0sIHVu
c2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CkBAIC01NCwyNSArNTIsMjMgQEAgcHVibGljOgogICAg
IGJvb2wgaXNWZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWZXJ0aWNhbDsgfQogICAgIExh
eW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE9wZXJhdG9y
Lml0YWxpY0NvcnJlY3Rpb24oKTsgfQogCi0gICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7Ci0KLSAgICB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7Ci0KICAgICB2b2lk
IHVwZGF0ZVRva2VuQ29udGVudChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKICAgICB2
b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQ
cm9wZXJ0aWVzKCk7CiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIGZpbmFsOwogICAgIFVD
aGFyIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQogCi1wcm90
ZWN0ZWQ6Citwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMo
KTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKKyAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CisKICAgICB2b2lkIHNl
dExlYWRpbmdTcGFjZShMYXlvdXRVbml0IGxlYWRpbmdTcGFjZSkgeyBtX2xlYWRpbmdTcGFjZSA9
IGxlYWRpbmdTcGFjZTsgfQogICAgIHZvaWQgc2V0VHJhaWxpbmdTcGFjZShMYXlvdXRVbml0IHRy
YWlsaW5nU3BhY2UpIHsgbV90cmFpbGluZ1NwYWNlID0gdHJhaWxpbmdTcGFjZTsgfQogCi1wcml2
YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJS
ZW5kZXJNYXRoTUxPcGVyYXRvciI7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxPcGVyYXRvciAo
YW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MT3BlcmF0b3IiOyB9CiAgICAgdm9pZCBwYWludENo
aWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWludEluZm8m
IGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgZmluYWw7CiAgICAgYm9vbCBpc1JlbmRlck1h
dGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFRoZSBm
b2xsb3dpbmcgb3BlcmF0b3JzIGFyZSBpbnZpc2libGU6IFUrMjA2MSBGVU5DVElPTiBBUFBMSUNB
VElPTiwgVSsyMDYyIElOVklTSUJMRSBUSU1FUywgVSsyMDYzIElOVklTSUJMRSBTRVBBUkFUT1Is
IFUrMjA2NCBJTlZJU0lCTEUgUExVUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggMGIxYWRlYTJlMzVjNGE1MDY2M2ZmNGFl
NmY1NzRkMTM0YzhmODc3MC4uMzdiYmVkN2Y0MWFiOTg5YjA2OTVjYmYwZmZiMzljNzZkM2IxYTYy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmbmRlZiBSZW5kZXJNYXRoTUxSb290X2gK
ICNkZWZpbmUgUmVuZGVyTWF0aE1MUm9vdF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShN
QVRITUwpCiAKQEAgLTM1LDI1ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlOwotCiAvLyBSZW5kZXIgYmFzZV4oMS9pbmRleCksIG9y
IHNxcnQoYmFzZSkgdXNpbmcgcmFkaWNhbCBub3RhdGlvbi4KLWNsYXNzIFJlbmRlck1hdGhNTFJv
b3QgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKLQotZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhN
TFJvb3RXcmFwcGVyOworY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJNYXRoTUxSb3cgewogCiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MUm9vdChFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7Ci0gICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVGcm9t
RWxlbWVudCgpIGZpbmFsOwotCi0gICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIGZpbmFsOwotICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVT
dHlsZSgpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwotCiBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OwogICAgIFJlbmRlckJveCYgZ2V0QmFzZSgpIGNvbnN0OwpAQCAtNjEsNiArNTEsMTIgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MUm9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlck1hdGhNTFJvb3QiOyB9CiAKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKKworICAgIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKKyAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDApIGZpbmFsOworICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBmaW5hbDsKKwogICAgIE1hdGhPcGVyYXRvciBtX3JhZGljYWxPcGVyYXRvcjsKICAgICBM
YXlvdXRVbml0IG1fdmVydGljYWxHYXA7CiAgICAgTGF5b3V0VW5pdCBtX3J1bGVUaGlja25lc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAKaW5kZXggZTNlNWQwYzBlODhmMjcxMTY4MGIyZWNlYzRkYWIyYmM1NGJlNmEyYi4uYTFi
M2UwYWM1MTJiMWEyMzExMmU3NjAyOTI1MmU0NzU0MWU4ZTE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNDQsMTEg
KzQ0LDYgQEAgUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJN
YXRoTUxSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQotICAgIDog
UmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotewotfQotCiB2b2lk
IFJlbmRlck1hdGhNTFJvdzo6dXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCkKIHsKICAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmdCb3goKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmgKaW5kZXggMDFlNmM5NWFkMzAxMGM3ZGYzNjRjZmVmZjY2YWNiYzM3
OWIwMzVkNy4uZjE1OWU1ZmYwOTE4MDU3MmE5MTNjZDEzZTE4NGFmZmIzOGNlNzNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNpZm5kZWYgUmVuZGVyTWF0aE1MUm93X2gKICNkZWZpbmUgUmVu
ZGVyTWF0aE1MUm93X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIApAQCAt
MzMsMTkgKzM0LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyTWF0
aE1MUm9vdDsKLQogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJs
b2NrIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwotICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAg
ICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKTsKIAorcHJvdGVjdGVkOgogICAgIHZv
aWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCi1wcm90ZWN0ZWQ6CiAgICAgdm9pZCBsYXlvdXRSb3dJ
dGVtcyhMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQpOwogICAgIHZvaWQg
Y29tcHV0ZUxpbmVWZXJ0aWNhbFN0cmV0Y2goTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0
JiBkZXNjZW50KTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5oCmluZGV4IDM2YzhhYjEwZTNkZDY3YjRmMjZhN2YxMzNjM2JkOGJlMmJj
YmVjMmEuLmMxMTU2ZDcwMzk0Y2U1ZTVkOWFlMGE4NWY4NmI4ZjVkMjJjOWJiNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZm5kZWYgUmVuZGVyTWF0aE1MU2NyaXB0c19oCiAj
ZGVmaW5lIFJlbmRlck1hdGhNTFNjcmlwdHNfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TUFUSE1MKQogCkBAIC0zOCwxOCArMzksMTggQEAgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0cyA6
IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MU2Ny
aXB0cyhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3Iq
IHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRl
OwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTY3JpcHRzIjsgfQogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDApIG92ZXJyaWRlOwogCiAgICAgZW51bSBTY3JpcHRzVHlwZSB7IFN1YiwgU3VwZXIsIFN1
YlN1cCwgTXVsdGlzY3JpcHRzLCBVbmRlciwgT3ZlciwgVW5kZXJPdmVyIH07CiAgICAgU2NyaXB0
c1R5cGUgbV9zY3JpcHRUeXBlOwogCiBwcml2YXRlOgorICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldEJhc2VBbmRTY3JpcHRzKFJl
bmRlckJveComIGJhc2UsIFJlbmRlckJveComIGZpcnN0UG9zdFNjcmlwdCwgUmVuZGVyQm94KiYg
Zmlyc3RQcmVTY3JpcHQpOwogICAgIExheW91dFVuaXQgc3BhY2VBZnRlclNjcmlwdCgpOwogICAg
IExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbihSZW5kZXJCb3gqIGJhc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4
IGZmZDQ5N2M2ZDYyMDk0YzZiYTE0YzI4NTBmZjY3ZTIwNjM1MzdmOTcuLmY3MGVkM2U4ZjZkYjli
MzJjODcyYzk2OTk3M2ZhZDZhNjg2OTgxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I2lmbmRlZiBSZW5kZXJNYXRoTUxTcGFjZV9oCiAjZGVmaW5lIFJlbmRlck1hdGhNTFNwYWNlX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IDQ0YmI4OWYy
MWFjZTA0MDZjMDY4YmQwNGQ5OWY3Yjk2NzQwN2M1MjIuLjU5YjYwOTNkYmU4NTk2YjRkZWFiMmUw
M2QzOTEyZTA2ZTk5MzA4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTI2LDEyICsyNiwxMiBAQAogCiAjaWZuZGVm
IFJlbmRlck1hdGhNTFRva2VuX2gKICNkZWZpbmUgUmVuZGVyTWF0aE1MVG9rZW5faAorI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCiAjaW5jbHVkZSAiTWF0aE1MVGV4dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgotI2luY2x1ZGUgIlJlbmRlclRl
eHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxMCArNDIsMTAgQEAgcHVibGlj
OgogCiAgICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAotICAgIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVUb2tlbkNvbnRlbnQoKTsKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CiAKK3Byb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2Vs
ZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50
UmVjdCkgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJv
b2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTFRva2VuIjsgfQorICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Owog
ICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlTWF0aFZhcmlhbnRHbHlwaCgp
OwogICAgIHZvaWQgc2V0TWF0aFZhcmlhbnRHbHlwaERpcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCmluZGV4
IDU2YjFhNGMwZjEyODQyMjRlOWJiYTEzYmYzODJkM2Y2ZmEyMDExODguLjRhYzJkNTQ3OGVmOTZi
YjdkOWRhYjI3NTgwNzdkNGIwZWZiMWI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtMjYsNiArMjYs
NyBAQAogCiAjaWZuZGVmIFJlbmRlck1hdGhNTFVuZGVyT3Zlcl9oCiAjZGVmaW5lIFJlbmRlck1h
dGhNTFVuZGVyT3Zlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKQEAg
LTM2LDEzICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJNYXRoTUxV
bmRlck92ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MU2NyaXB0cyB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7Ci0gICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1JlbmRlck1hdGhN
TFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVu
ZGVyT3ZlciI7IH0KKyAgICBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyIjsgfQorCisgICAgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOworICAgIHZvaWQgbGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkg
ZmluYWw7CiAKICAgICB2b2lkIGNvbXB1dGVPcGVyYXRvcnNIb3Jpem9udGFsU3RyZXRjaCgpOwog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283655</attachid>
            <date>2016-07-14 10:05:28 -0700</date>
            <delta_ts>2016-07-14 11:00:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159336-20160714190440.patch</filename>
            <type>text/plain</type>
            <size>33340</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhiNzMxNjU0YTk0ZTk0
YWJiODlhY2M1YmM0YTJiMGZkNjc4MzYxZS4uMmEwNTBlZGFlN2M1MDFhZmE2YWExMjk0ODA3YTc4
NzYzOTFmZGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA3LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgQ2xlYW51cCBvZiBNYXRo
TUwgaGVhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZG8gc29tZSBjbGVhbnVwIGluIE1hdGhNTCBoZWFkZXJzOgorICAgICAgICAtIFVzZSAj
cHJhZ21hIG9uY2UKKyAgICAgICAgLSBVc2UgZmluYWwgZm9yIGNsYXNzIHRoYXQgYXJlIG5vdCBl
eHRlbmRlZC4KKyAgICAgICAgLSBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZSBmb3Igdmly
dHVhbCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBvdmVycmlkZGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4K
KyAgICAgICAgLSBUcnkgYW5kIHJlZHVjZSB0aGUgdmlzaWJpbGl0eSBvZiBmdW5jdGlvbiBtZW1i
ZXJzIHRvIHByaXZhdGUgb3IgcHJvdGVjdGVkIGFzIGFwcHJvcHJpYXRlLgorICAgICAgICAtIFJl
bW92ZSB1c2VsZXNzICNpbmNsdWRlCisgICAgICAgIC0gUmVtb3ZlIHVzZWxlc3MgY2xhc3Mgb3Ig
ZnJpZW5kc2hpcCBkZWNsYXJhdGlvbgorICAgICAgICAtIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25z
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MUGFkZGVkRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50
Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0
aE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpSZW5kZXJN
YXRoTUxSb3cpOiBEZWxldGVkLiBXZSBubyBsb25nZXIgY3JlYXRlIGFub255bW91cyByb3cuCisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmg6CisKIDIwMTYtMDctMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBVc2UgYSBHU291cmNlIGluc3Rl
YWQgb2YgYSB0aHJlYWQgdG8gcG9sbCBtZW1vcnkgcHJlc3N1cmUgZXZlbnRGRCBpbiBsaW51eCBp
bXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggMjE2
Y2VjNjUxNWFmNzhmMjEzYTNlMzQ0NzA4MGQyMmFlOTRlMmIzNi4uNGM5NjAwYTAwZTZjMDhmOTk5
NTQxNzIwOTNiM2Q1NDM5Y2JmMjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTWF0
aE1MRWxlbWVudF9oCi0jZGVmaW5lIE1hdGhNTEVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoTUFUSE1MKQogCkBAIC0xMTMsNSArMTEyLDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5k
aWYgLy8gRU5BQkxFKE1BVEhNTCkKLQotI2VuZGlmIC8vIE1hdGhNTEVsZW1lbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgK
aW5kZXggYTU4OTVlZmM5MmNiNDlkZmRjODAzNGJmNGJmMDU4MzI4NmEzZGQ4ZC4uZDI2YWI1ZjA2
YTk4MGYwNjkwYzlhYzcwODdlODRhMzIyMDhlZWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCkBAIC0yNCw4ICsyNCw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudF9oCi0jZGVmaW5lIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnRfaAorI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIK
QEAgLTM2LDggKzM1LDYgQEAgY2xhc3MgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCA6IHB1
YmxpYyBNYXRoTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYpOwogCi0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJvdGVjdGVkOgogICAgIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpAQCAt
NDUsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uTWF0aE1M
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXggOTJmMTgwMjkwYjk4
YTcwYzc5ZTZjYjAxZTU0OWVkZmEzYTIxYTZkOC4uNzFlMTIyZDkzNTljMWQ5ZDc4NDNlNWI2MGJk
YmFhZDU4YmIyYjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmgKQEAgLTI0LDI5ICsyNCwyNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1h
dGhNTE1hdGhFbGVtZW50X2gKLSNkZWZpbmUgTWF0aE1MTWF0aEVsZW1lbnRfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogI2luY2x1ZGUgIk1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNYXRoTUxNYXRoRWxl
bWVudCA6IHB1YmxpYyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50IHsKK2NsYXNzIE1hdGhN
TE1hdGhFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1MTWF0aEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi1wcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBNYXRoTUxN
YXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CiAKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiB9OwogCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoTUFUSE1MKQotI2VuZGlmIC8vIE1hdGhNTE1hdGhFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaAppbmRleCBjNGZjZjMzY2JkZWUyMDZm
ODc2NTMzNzgzMzkyMzY3ZTcxNzYyMWI1Li5hMGM5M2I2OTg5OTBiYTFmYjZlNGFhZTM4MDk2ZGJk
ZDcwZmZhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxl
bWVudC5oCkBAIC0yNCw4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
TWF0aE1MTWVuY2xvc2VFbGVtZW50X2gKLSNkZWZpbmUgTWF0aE1MTWVuY2xvc2VFbGVtZW50X2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJFbGVtZW50Lmgi
CkBAIC0zNiw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hdGhNTE1lbmNs
b3NlRWxlbWVudCBmaW5hbDogcHVibGljIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1MTWVuY2xvc2VFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsK
IAogICAgIGVudW0gTWVuY2xvc2VOb3RhdGlvbkZsYWcgewogICAgICAgICBMb25nRGl2ID0gMSA8
PCAxLApAQCAtNTksNiArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1hdGhNTE1lbmNs
b3NlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0KICAgICB2b2lkIGFk
ZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykgeyBtX25vdGF0aW9u
RmxhZ3MgfD0gbm90YXRpb25GbGFnOyB9CiAgICAgdW5zaWduZWQgc2hvcnQgbV9ub3RhdGlvbkZs
YWdzOwpAQCAtNjcsNCArNjYsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1B
VEhNTCkKLSNlbmRpZiAvLyBNYXRoTUxNZW5jbG9zZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oCmluZGV4IGU5YzRlZjY5MGEw
ODk1ZjczNTJjZTcyZWZhZDgyNjRjMWUwMzlkNDUuLjAzMzg3ZjI3MjVhMmQ1ZGQxYjIxMTBkNjBl
OTA5NmRmYzFkMjA2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxP
cGVyYXRvckRpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnlfaAotI2RlZmluZSBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnlfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCkBA
IC01Nyw0ICs1NiwzIEBAIGJvb2wgaXNWZXJ0aWNhbChVQ2hhcik7CiAKIH0KICNlbmRpZiAvLyBF
TkFCTEUoTUFUSE1MKQotI2VuZGlmIC8vIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAppbmRleCAwZGM5Njk2Njdh
NjMxNDMxODMyMGEwYmRjOTQwYjkxNTg1NGI3OTllLi42MDAyYWRkZTdjMWQ2MzViZjg1ZDI0MzNk
MTc5ZDk2ZWFhMzAwOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UGFkZGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRF
bGVtZW50LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBNYXRoTUxQYWRkZWRFbGVtZW50X2gKLSNkZWZpbmUgTWF0aE1MUGFkZGVkRWxlbWVudF9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVkZSAiTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oIgpAQCAtNTUsNCArNTQsMyBAQCBwcml2YXRlOgogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBNYXRoTUxQYWRkZWRFbGVtZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IGYxYTQ0ZWQ5
YTYxNTFlZmNjMDQ2MTBkNzZiNmQyNWY2ZDRlZjg3MzQuLjBkZmMwZDgyODQ5ODUxMjM0MjhmZjAw
YzY1YjAxNDBmY2RhNmViYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVj
dEVsZW1lbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIE1hdGhNTFNlbGVjdEVsZW1lbnRfaAotI2RlZmluZSBNYXRoTUxTZWxlY3RFbGVtZW50X2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmgiCkBAIC00MCwyNiArMzksMjUgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIE1hdGhNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKLSAgICBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qg
ZmluYWw7CiAKLSAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVN
b2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBvdmVycmlkZTsKLSAgICB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKLSAgICBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKSBmaW5hbDsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3RseSkg
ZmluYWw7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgZmluYWw7CisgICAg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIGZpbmFsOwogCiAgICAgdm9pZCB0
b2dnbGUoKTsKICAgICBpbnQgZ2V0U2VsZWN0ZWRBY3Rpb25DaGlsZEFuZEluZGV4KEVsZW1lbnQq
JiBzZWxlY3RlZENoaWxkKTsKICAgICBFbGVtZW50KiBnZXRTZWxlY3RlZEFjdGlvbkNoaWxkKCk7
CiAgICAgRWxlbWVudCogZ2V0U2VsZWN0ZWRTZW1hbnRpY3NDaGlsZCgpOwogCi0gICAgdm9pZCB1
cGRhdGVTZWxlY3RlZENoaWxkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTZWxlY3RlZENo
aWxkKCkgZmluYWw7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc2VsZWN0ZWRDaGlsZDsKIH07CiAK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCi0jZW5kaWYgLy8gTWF0aE1MU2VsZWN0RWxl
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKaW5kZXgg
MGY4ZTE2ODVmODJlZjI4NDdmOGNhYjllZDczYjNkNGUzNWRjZTExZC4uOTNmNjdjNjgxYTU0YjNj
MDJmYTRkNjBiODYzZGFlY2YwODdjZDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIE1hdGhNTFNwYWNlRWxlbWVudF9oCi0jZGVmaW5lIE1hdGhNTFNwYWNlRWxlbWVu
dF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVkZSAiTWF0aE1M
RWxlbWVudC5oIgpAQCAtNTEsNCArNTAsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBNYXRoTUxTcGFjZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAppbmRleCBiYjJiYjA3MWQ3MjYzYmRiMmE2MDVm
Y2FmZjNjMzU2N2YyMjgwN2U3Li4wZWQxZjY0MjFiNjhiMDg2MjNjOTAwOWJlOTlmZjA3ZmUzN2Rh
NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaApAQCAtMjQs
OCArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1hdGhNTFRleHRFbGVt
ZW50X2gKLSNkZWZpbmUgTWF0aE1MVGV4dEVsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUFUSE1MKQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKQEAgLTM1LDIxICszNCwy
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYXRoTUxUZXh0RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTFRl
eHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
KTsKLSAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBp
c1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAog
cHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKLSAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CisgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
ZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBm
aW5hbDsKIAotICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhN
TCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShNQVRITUwpCi0jZW5kaWYgLy8gTWF0aE1MVGV4dEVsZW1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5oCmluZGV4IDY1ZjdlOTYxYWE5ODE1
MjAxMzZmODI3ZTQ2NWZmNjc5ZDZlZjQ3NTYuLjI3ZWFjNzY1NzkxYTE1ODFmZjdjNjc1ZTQ2M2U0
MDIxZWYzNjdlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
TWF0aE1MU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhN
TFN0eWxlLmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBNYXRoTUxTdHlsZV9oCi0jZGVmaW5lIE1hdGhNTFN0eWxlX2gKICNwcmFnbWEgb25jZQogCiAj
aWYgRU5BQkxFKE1BVEhNTCkKQEAgLTg2LDQgKzg0LDMgQEAgcHJpdmF0ZToKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNQVRITUwpCi0jZW5kaWYgLy8gTWF0aE1MU3R5bGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmgKaW5kZXggNjBjNjQ2OTc4YjZj
OWZlMGY1NjhkYWUxYzZmNjhhOTczMzY3YTE1Yy4uZGUyZDAzZjlkMWU0ODllOWJlZGEyMTZhZDM1
ZTI1ZDhiZTJkZjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9NYXRoT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhPcGVyYXRvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgTWF0aE9wZXJhdG9yX2gKLSNkZWZpbmUgTWF0aE9wZXJhdG9yX2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJHbHlwaFBhZ2UuaCIKQEAgLTEwNCw0
ICsxMDMsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKLSNlbmRp
ZiAvLyBNYXRoT3BlcmF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDliM2IzZTFhMzg2NzU1YmY3Mzc2ZTBkYWU3
YzkzNGE0OGI4YjZlMWMuLmRhYzc3NmEwNzY2NTI2MDVmNmJkZjhiNzljNWJlOWE3ZTA0YmQyOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKQEAgLTI0LDggKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBSZW5kZXJNYXRoTUxCbG9ja19oCi0jZGVmaW5lIFJlbmRlck1hdGhNTEJsb2NrX2gKKyNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIApAQCAtMTA0LDEzICsxMDMsMTMgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBNYXRoTUxTdHlsZSogbWF0aE1MU3R5bGUoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0aE1MU3R5bGUuZ2V0KCkp
OyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9CisgICAgYm9vbCBpc1Jl
bmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFi
bGUiOyB9CisgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21hdGhNTFN0eWxlOwogfTsKQEAgLTEyNSw0ICsx
MjQsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTWF0aE1M
QmxvY2ssIGlzUmVuZGVyTWF0aE1MQmxvY2soKSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJNYXRoTUxUYWJsZSwgaXNSZW5kZXJNYXRoTUxUYWJsZSgpKQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBSZW5kZXJNYXRoTUxCbG9ja19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuaAppbmRleCBiY2JiY2UxN2ViZTc3NmVmYjc4NzdkMjYzZTFjMjg3OTgzZDM1MWUzLi43YTgx
NmNlMGUzMGJiOTVmNzNlZDZhYzMyMmVjYTQ2NTQ3Y2NjYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJNYXRoTUxGZW5j
ZWRfaAotI2RlZmluZSBSZW5kZXJNYXRoTUxGZW5jZWRfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUFUSE1MKQogCkBAIC00MCwxMCArMzksMTAgQEAgcHVibGljOgogICAgIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBw
cml2YXRlOgotICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGZW5jZWQiOyB9Ci0gICAgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsK
LSAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbmRl
ck1hdGhNTEZlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZlbmNl
ZCI7IH0KKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBmaW5h
bDsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4gY3JlYXRlTWF0aE1MT3Bl
cmF0b3IoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjpGb3JtLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpOwogICAgIHZvaWQgbWFr
ZUZlbmNlcygpOwpAQCAtNTgsNSArNTcsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1BVEhNTCkKLQotI2VuZGlmIC8vIFJlbmRlck1hdGhNTEZlbmNlZF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgK
aW5kZXggY2ExNzYxZGVlODlhYmE4MTJmZThjNTdmNjZiYTdlOTk3MzMzNDAxMy4uYjU0ZGE4N2I1
ZTQyMDE0YmUzNmJkMzZhODFhNTQ4ZTc4ZGI5MDgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtMjUsOCAr
MjUsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlbmRlck1hdGhNTEZyYWN0
aW9uX2gKLSNkZWZpbmUgUmVuZGVyTWF0aE1MRnJhY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoTUFUSE1MKQogCkBAIC00MiwxNiArNDEsMTQgQEAgcHVibGljOgogICAgIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQog
ICAgIGZsb2F0IHJlbGF0aXZlTGluZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVs
dExpbmVUaGlja25lc3MgPyBtX2xpbmVUaGlja25lc3MgLyBtX2RlZmF1bHRMaW5lVGhpY2tuZXNz
IDogTGF5b3V0VW5pdCgwKTsgfQogCi0gICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgYm9v
bCBpc1JlbmRlck1hdGhNTEZyYWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
TWF0aE1MRnJhY3Rpb24iOyB9CiAKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgZmluYWw7CisgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKICAgICBPcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJh
dG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbDsKQEAgLTk0LDUgKzkxLDMgQEAgcHJp
dmF0ZToKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNYXRoTUxG
cmFjdGlvbiwgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpKQogCiAjZW5kaWYgLy8gRU5BQkxFKE1B
VEhNTCkKLQotI2VuZGlmIC8vIFJlbmRlck1hdGhNTEZyYWN0aW9uX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggMGUyNzI5
ZGI0MTg2NjY2YjdlMGM5ZmVkMDg5MmEwM2Y3Y2VjZmYzMy4uOWUyYjNmYWY2ODQ2NTZmZDZjODVl
NzRiNzFiYTM0ZDFhMzA1OGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJNYXRoTUxNYXRoX2gKLSNkZWZpbmUgUmVuZGVyTWF0
aE1MTWF0aF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKQEAgLTM3LDgg
KzM2LDggQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1hdGgoRWxlbWVudCYsIFJlbmRlclN0
eWxlJiYpOwogCiBwcml2YXRlOgotICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWF0aCI7IH0KKyAgICBib29sIGlz
UmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1h
dGgiOyB9CiB9OwogCiB9CkBAIC00Niw0ICs0NSwzIEBAIHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTWF0aE1MTWF0aCwgaXNSZW5kZXJNYXRoTUxN
YXRoKCkpCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQotI2VuZGlmIC8vIFJlbmRlck1hdGhN
TE1hdGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IDI0ZmI5ZjhmNGNhOWVjZTMzNGZjNzI4ODQ0MGU1ZTZk
MmI1MGRhMGMuLjY4NWQ5ZThmYmI2NmJhNjJiNTAzOGI4YWY3M2M2MjA3NThlMzU3NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1l
bmNsb3NlLmgKQEAgLTI0LDggKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBSZW5kZXJNYXRoTUxNZW5jbG9zZV9oCi0jZGVmaW5lIFJlbmRlck1hdGhNTE1lbmNsb3NlX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKICNpbmNsdWRlICJNYXRoTUxNZW5j
bG9zZUVsZW1lbnQuaCIKQEAgLTU4LDQgKzU3LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNYXRoTUxNZW5jbG9zZSwgaXNSZW5kZXJNYXRo
TUxNZW5jbG9zZSgpKQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBSZW5k
ZXJNYXRoTUxNZW5jbG9zZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggODllYWRiMWY5NGYwMzk3NzExZTI2
NDQ1YjFkOTkwMDgzOGViYWU1NC4uMmRhMTJmNWUxZjJiMmY1Zjg5MzYxZWYyN2IxNmYzZDM5MjA2
NWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtMjMsMjIgKzIzLDE4IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgUmVuZGVyTWF0aE1MT3BlcmF0b3JfaAotI2RlZmluZSBSZW5kZXJNYXRo
TUxPcGVyYXRvcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKLSNpbmNs
dWRlICJGb250LmgiCi0jaW5jbHVkZSAiR2x5cGhQYWdlLmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
Ik1hdGhPcGVyYXRvci5oIgotI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKICNpbmNsdWRl
ICJSZW5kZXJNYXRoTUxUb2tlbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJl
bmRlck1hdGhNTE9wZXJhdG9yIDogcHVibGljIFJlbmRlck1hdGhNTFRva2VuIHsKK2NsYXNzIFJl
bmRlck1hdGhNTE9wZXJhdG9yIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFRva2VuIHsKIHB1
YmxpYzoKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
LCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6
OkZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CkBAIC01NCwyNSArNTAsMjMgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNWZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWZXJ0aWNhbDsg
fQogICAgIExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
aE9wZXJhdG9yLml0YWxpY0NvcnJlY3Rpb24oKTsgfQogCi0gICAgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7Ci0K
LSAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7Ci0K
ICAgICB2b2lkIHVwZGF0ZVRva2VuQ29udGVudChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5n
KTsKICAgICB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRl
T3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIGZpbmFs
OwogICAgIFVDaGFyIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsg
fQogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRvclBy
b3BlcnRpZXMoKTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKKyAg
ICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CisKICAg
ICB2b2lkIHNldExlYWRpbmdTcGFjZShMYXlvdXRVbml0IGxlYWRpbmdTcGFjZSkgeyBtX2xlYWRp
bmdTcGFjZSA9IGxlYWRpbmdTcGFjZTsgfQogICAgIHZvaWQgc2V0VHJhaWxpbmdTcGFjZShMYXlv
dXRVbml0IHRyYWlsaW5nU3BhY2UpIHsgbV90cmFpbGluZ1NwYWNlID0gdHJhaWxpbmdTcGFjZTsg
fQogCi1wcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTE9wZXJhdG9yIChhbm9ueW1v
dXMpIiA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciI7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxP
cGVyYXRvciAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MT3BlcmF0b3IiOyB9CiAgICAgdm9p
ZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQ
YWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgZmluYWw7CiAgICAgYm9vbCBp
c1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IC8vIFRoZSBmb2xsb3dpbmcgb3BlcmF0b3JzIGFyZSBpbnZpc2libGU6IFUrMjA2MSBGVU5DVElP
TiBBUFBMSUNBVElPTiwgVSsyMDYyIElOVklTSUJMRSBUSU1FUywgVSsyMDYzIElOVklTSUJMRSBT
RVBBUkFUT1IsIFUrMjA2NCBJTlZJU0lCTEUgUExVUy4KQEAgLTEwOSw0ICsxMDMsMyBAQCBwcml2
YXRlOgogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlck1hdGhNTE9w
ZXJhdG9yLCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFU
SE1MKQotI2VuZGlmIC8vIFJlbmRlck1hdGhNTE9wZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCmluZGV4IDhhMGNm
OTU3MDFkYmU5OWM4ZGRiZTQ5OGRjYTU3NzRlMWY3OWU4NTcuLjY5MGUxOGYxNDY1YzAzY2YyZDA5
NmI2ZWI5Zjc4MjU0OTc2NWIzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaApAQCAtMjMsOCArMjMsNiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlbmRlck1hdGhNTFBhZGRlZF9oCi0jZGVmaW5lIFJl
bmRlck1hdGhNTFBhZGRlZF9oCiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNQVRITUwpCkBA
IC02MSw0ICs1OSwzIEBAIHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyTWF0aE1MUGFkZGVkLCBpc1JlbmRlck1hdGhNTFBhZGRlZCgpKQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1BVEhNTCkKLSNlbmRpZiAvLyBSZW5kZXJNYXRoTUxQYWRkZWRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApp
bmRleCAwYjFhZGVhMmUzNWM0YTUwNjYzZmY0YWU2ZjU3NGQxMzRjOGY4NzcwLi5kM2FhZWMxNDhk
ZTRjMzUwOWE5YmIzNDU0OTE0NjQ0MTBhZDE2Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtMjQsOCArMjQsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlbmRlck1hdGhNTFJvb3RfaAotI2RlZmlu
ZSBSZW5kZXJNYXRoTUxSb290X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkK
IApAQCAtMzUsMjUgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVu
ZGVyTWF0aE1MTWVuY2xvc2U7Ci0KIC8vIFJlbmRlciBiYXNlXigxL2luZGV4KSwgb3Igc3FydChi
YXNlKSB1c2luZyByYWRpY2FsIG5vdGF0aW9uLgotY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6IHB1
YmxpYyBSZW5kZXJNYXRoTUxSb3cgewotCi1mcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdy
YXBwZXI7CitjbGFzcyBSZW5kZXJNYXRoTUxSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhN
TFJvdyB7CiAKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKLSAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCkgZmluYWw7Ci0KLSAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmlu
YWw7Ci0gICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVN0eWxlKCk7
CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAg
UmVuZGVyQm94JiBnZXRCYXNlKCkgY29uc3Q7CkBAIC02MSw2ICs0OSwxMiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyTWF0aE1MUm9vdCI7IH0KIAorICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOworCisgICAgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOworICAgIHZvaWQgbGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkg
ZmluYWw7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZp
bmFsOworCiAgICAgTWF0aE9wZXJhdG9yIG1fcmFkaWNhbE9wZXJhdG9yOwogICAgIExheW91dFVu
aXQgbV92ZXJ0aWNhbEdhcDsKICAgICBMYXlvdXRVbml0IG1fcnVsZVRoaWNrbmVzczsKQEAgLTgx
LDUgKzc1LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVD
VChSZW5kZXJNYXRoTUxSb290LCBpc1JlbmRlck1hdGhNTFJvb3QoKSkKIAogI2VuZGlmIC8vIEVO
QUJMRShNQVRITUwpCi0KLSNlbmRpZiAvLyBSZW5kZXJNYXRoTUxSb290X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCBl
M2U1ZDBjMGU4OGYyNzExNjgwYjJlY2VjNGRhYjJiYzU0YmU2YTJiLi5hMWIzZTBhYzUxMmIxYTIz
MTEyZTc2MDI5MjUyZTQ3NTQxZThlMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCkBAIC00NCwxMSArNDQsNiBAQCBSZW5k
ZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogewogfQogCi1SZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCi0gICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi17Ci19Ci0KIHZvaWQgUmVuZGVyTWF0aE1M
Um93Ojp1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKQogewogICAgIGZvciAoYXV0byogY2hpbGQg
PSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuaAppbmRleCAwMWU2Yzk1YWQzMDEwYzdkZjM2NGNmZWZmNjZhY2JjMzc5YjAzNWQ3Li4wNjM2
ZjFjMmJlNzc3ZTIyODBjMTBkYTNiNDRhY2VkMWUzNjA1NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTI0LDggKzI0LDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJNYXRoTUxSb3dfaAotI2Rl
ZmluZSBSZW5kZXJNYXRoTUxSb3dfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUFUSE1M
KQogCkBAIC0zMywxOSArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBS
ZW5kZXJNYXRoTUxSb290OwotCiBjbGFzcyBSZW5kZXJNYXRoTUxSb3cgOiBwdWJsaWMgUmVuZGVy
TWF0aE1MQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiwgUmVu
ZGVyU3R5bGUmJik7Ci0gICAgUmVuZGVyTWF0aE1MUm93KERvY3VtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAKICAgICB2b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygpOwogCitwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQg
cGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLXByb3RlY3RlZDoKICAgICB2b2lkIGxh
eW91dFJvd0l0ZW1zKExheW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCk7CiAg
ICAgdm9pZCBjb21wdXRlTGluZVZlcnRpY2FsU3RyZXRjaChMYXlvdXRVbml0JiBhc2NlbnQsIExh
eW91dFVuaXQmIGRlc2NlbnQpOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKSBvdmVycmlkZTsKQEAgLTYwLDQgKzU2LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNYXRoTUxSb3csIGlzUmVuZGVyTWF0aE1MUm93
KCkpCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQotI2VuZGlmIC8vIFJlbmRlck1hdGhNTFJv
d19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5oCmluZGV4IDM2YzhhYjEwZTNkZDY3YjRmMjZhN2YxMzNjM2JkOGJlMmJjYmVj
MmEuLjg4NTZlYzY2ZDRjNWZjNGNjMTA5NGFjMTg4MTIxZDcxNjY2NDI1MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CkBAIC0yNSw4ICsyNSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVuZGVy
TWF0aE1MU2NyaXB0c19oCi0jZGVmaW5lIFJlbmRlck1hdGhNTFNjcmlwdHNfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCkBAIC0zOCwxOCArMzcsMTggQEAgY2xhc3MgUmVu
ZGVyTWF0aE1MU2NyaXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgUmVu
ZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGZpbmFsOwotICAgIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGxh
eW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhl
aWdodCA9IDApIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhN
TFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTY3Jp
cHRzIjsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwogCiAgICAgZW51bSBTY3JpcHRzVHlw
ZSB7IFN1YiwgU3VwZXIsIFN1YlN1cCwgTXVsdGlzY3JpcHRzLCBVbmRlciwgT3ZlciwgVW5kZXJP
dmVyIH07CiAgICAgU2NyaXB0c1R5cGUgbV9zY3JpcHRUeXBlOwogCiBwcml2YXRlOgorICAgIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdl
dEJhc2VBbmRTY3JpcHRzKFJlbmRlckJveComIGJhc2UsIFJlbmRlckJveComIGZpcnN0UG9zdFNj
cmlwdCwgUmVuZGVyQm94KiYgZmlyc3RQcmVTY3JpcHQpOwogICAgIExheW91dFVuaXQgc3BhY2VB
ZnRlclNjcmlwdCgpOwogICAgIExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbihSZW5kZXJCb3gq
IGJhc2UpOwpAQCAtNjEsNSArNjAsMyBAQCBwcml2YXRlOgogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19SRU5ERVJfT0JKRUNUKFJlbmRlck1hdGhNTFNjcmlwdHMsIGlzUmVuZGVyTWF0aE1MU2NyaXB0
cygpKQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKLQotI2VuZGlmIC8vIFJlbmRlck1hdGhN
TFNjcmlwdHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcGFjZS5oCmluZGV4IGZmZDQ5N2M2ZDYyMDk0YzZiYTE0YzI4NTBmZjY3ZTIwNjM1
MzdmOTcuLjBlYjIwNTZlODdkYWY5NGJiNDc0MzRjMzIzNWRmZTc3ODdhZTQyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJN
YXRoTUxTcGFjZV9oCi0jZGVmaW5lIFJlbmRlck1hdGhNTFNwYWNlX2gKKyNwcmFnbWEgb25jZQog
CiAjaWYgRU5BQkxFKE1BVEhNTCkKIApAQCAtNTUsNCArNTQsMyBAQCBwcml2YXRlOgogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlck1hdGhNTFNwYWNlLCBpc1JlbmRl
ck1hdGhNTFNwYWNlKCkpCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQotI2VuZGlmIC8vIFJl
bmRlck1hdGhNTFNwYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCA0NGJiODlmMjFhY2UwNDA2YzA2OGJkMDRkOTlm
N2I5Njc0MDdjNTIyLi45Y2FmNDhjNTcwMGNjN2YxMTZlYWU4YWJiNTlkNWE5YTg1MmQ0YjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oCkBAIC0yNCwxNCArMjQsMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBSZW5kZXJNYXRoTUxUb2tlbl9oCi0jZGVmaW5lIFJlbmRlck1hdGhNTFRva2VuX2gKKyNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAogI2luY2x1ZGUgIk1hdGhNTFRleHRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsMTAgKzQwLDEwIEBAIHB1Ymxp
YzoKIAogICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKLSAgICBi
b29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVG9rZW5Db250ZW50KCk7CiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRl
OwogCitwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNl
bGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmlu
dFJlY3QpIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKQEAgLTU1LDYgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBi
b29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJNYXRoTUxUb2tlbiI7IH0KKyAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfTsK
ICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZU1hdGhWYXJpYW50R2x5cGgo
KTsKICAgICB2b2lkIHNldE1hdGhWYXJpYW50R2x5cGhEaXJ0eSgpCkBAIC03MSw0ICs3MCwzIEBA
IHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTWF0
aE1MVG9rZW4sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSkKIAogI2VuZGlmIC8vIEVOQUJMRShNQVRI
TUwpCi0jZW5kaWYgLy8gUmVuZGVyTWF0aE1MVG9rZW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5kZXggNTZi
MWE0YzBmMTI4NDIyNGU5YmJhMTNiZjM4MmQzZjZmYTIwMTE4OC4uODZjMTkyNzZkNzIwYjUyMDZj
ZTMxMjVjODU1ZmUyOWJiZjQ1ZGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0yNCw4ICsyNCw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVuZGVyTWF0aE1MVW5kZXJPdmVyX2gK
LSNkZWZpbmUgUmVuZGVyTWF0aE1MVW5kZXJPdmVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5B
QkxFKE1BVEhNTCkKIApAQCAtMzYsMTMgKzM1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxTY3Jp
cHRzIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwotICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5h
bDsKLSAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNS
ZW5kZXJNYXRoTUxTY3JpcHRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyIjsgfQorICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxVbmRl
ck92ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxVbmRlck92ZXIiOyB9
CisKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CisgICAg
dm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKIAogICAgIHZvaWQgY29tcHV0ZU9wZXJhdG9yc0hvcml6
b250YWxTdHJldGNoKCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CkBAIC02MSw1ICs2MSwz
IEBAIHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpKQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1BVEhNTCkKLQotI2VuZGlmIC8vIFJlbmRlck1hdGhNTFVuZGVyT3Zlcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>