<?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>127219</bug_id>
          
          <creation_ts>2014-01-18 08:10:23 -0800</creation_ts>
          <short_desc>Remove files only used by the threaded HTML parser</short_desc>
          <delta_ts>2014-01-18 08:44:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969438</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 08:10:23 -0800</bug_when>
    <thetext>Remove files only used by the threaded HTML parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969439</commentid>
    <comment_count>1</comment_count>
      <attachid>221548</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 08:11:40 -0800</bug_when>
    <thetext>Created attachment 221548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969440</commentid>
    <comment_count>2</comment_count>
      <attachid>221549</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 08:37:25 -0800</bug_when>
    <thetext>Created attachment 221549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969441</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 08:44:40 -0800</bug_when>
    <thetext>Committed r162251: &lt;http://trac.webkit.org/changeset/162251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221548</attachid>
            <date>2014-01-18 08:11:40 -0800</date>
            <delta_ts>2014-01-18 08:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127219-20140118081139.patch</filename>
            <type>text/plain</type>
            <size>43161</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU0Njk2YzlmMTM4YThm
ZmYwZjFhOWM4M2VkZDgxMmY3ZjVmYTBhMy4uMjQzMTQ3OGVlYTNmMTllMTFmOWQyM2QwMWUyZjE0
ZjdiMGMwZmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE0LTAxLTE4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbGVz
IG9ubHkgdXNlZCBieSB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzIxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTMzMzEyNzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9w
YXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oOiBSZW1vdmVkLgorCiAyMDE0LTAxLTE3ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBNaWNyby1vcHRpbWl6ZSBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGMzNmI3MTliNzQ3ZDE1Y2RhYjk1ZjgzNDQ0YjI3YTI5ZmMxZjI2MjYuLjFhYzliYjhlNGFh
YTc2YTJhZjJhOGMyNjFlMDliZGU1MGU0YjU2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
NTM3LDEwICsxNTM3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgaHRtbC9mb3Jtcy9G
aWxlSWNvbkxvYWRlci5jcHAKIAotICAgIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW0uY3BwCi0gICAgaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCiAgICAg
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCi0gICAgaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
ICAgICBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZh
ODJiZDA3YjI3MWJiN2NiMGU5YTQ5ZjNhMTI2ZDJiMWRjNTFhNmIuLmQzMjJiOWJjMWNlOGUxNDYw
YjU3ZjUzMmQ3MGJmMTkxMDRhZmRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMzU3NywxNCArMzU3Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJl
cklucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9r
ZW4uaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5w
dXRTdHJlYW0uaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXAot
CVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAzYTJiYWVhMDA2MTc0MzgyZGZl
NDQ2YzU4MDgwOWYwYThkY2Q4MGYyLi45ZTA5ZjY1NzAyMTg1NTIwMDQ4YTNkNzFhZmM1YmEyYWFj
MjhlZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTE1Njk5LDkgKzE1Njk5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGh0bWxcVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxXZWVrSW5wdXRUeXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGh0bWxcZm9ybXNcRmlsZUljb25Mb2FkZXIuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5j
cHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxDb21wYWN0SFRN
TFRva2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXENT
U1ByZWxvYWRTY2FubmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxEb2N1bWVudFBhcnNlci5jcHAiIC8+CkBAIC0yMDU3Myw4
ICsyMDU3MCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXFdlZWtJbnB1dFR5
cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcZm9ybXNcRmlsZUljb25M
b2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEF0b21p
Y0hUTUxUb2tlbi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJc
QmFja2dyb3VuZEhUTUxQYXJzZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXENvbXBhY3RIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXENTU1ByZWxvYWRTY2FubmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MQ29uc3RydWN0aW9uU2l0ZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTERvY3VtZW50UGFyc2VyLmgiIC8+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKaW5kZXggNTE1ZmQ5YmM2NGI0ZGQwMzRjOGRiN2M5ZGQzMDcyNTI4ZjYyOTk5
ZS4uODdiZmNiMjkxODY2N2RlM2UxNzkyMzE0N2VkYjZlOWFiNWNkNmI0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwpAQCAtNDExOSwxMiArNDExOSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1s
XGZvcm1zXEZpbGVJY29uTG9hZGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmh0bWxcZm9ybXM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
cGFyc2VyXEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIj4KLSAgICAgIDxGaWx0ZXI+aHRt
bFxwYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGh0bWxccGFyc2VyXEJhY2tncm91bmRIVE1MUGFyc2VyLmNwcCI+Ci0gICAgICA8Rmls
dGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxDb21wYWN0SFRNTFRva2VuLmNwcCI+CiAgICAgICA8
RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMTI0Niw5
ICsxMTI0MCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxBdG9t
aWNIVE1MVG9rZW4uaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNr
Z3JvdW5kSFRNTFBhcnNlci5oIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XENvbXBhY3RIVE1MVG9rZW4uaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjRlMTljYzU3Y2YxYThkYzQyMzQ1ZWI1ZWQ1Y2M4NGUx
NTZlYjk3MC4uZTYxYmUyMGQ2N2ExNDMyYzYxZGE5ODM1MTQwMTk3MDIyNmEzYjgyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzQxNSw5ICszNDE1LDYgQEAKIAkJOTc4RDA3Q0ExNDVBMTAxNjAwOTY5MDhEIC8qIFNWR0V4Y2Vw
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzhEMDdDOTE0NUExMDE2MDA5NjkwOEQgLyogU1ZHRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJOTc4
RDA3Q0MxNDVBMTAyRTAwOTY5MDhEIC8qIFhQYXRoRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEQwN0NCMTQ1QTEwMkUwMDk2OTA4
RCAvKiBYUGF0aEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCTk3OEQwN0NFMTQ1QTEwMzcwMDk2OTA4
RCAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhEMDdDRDE0NUExMDM3MDA5NjkwOEQgLyogWE1MSHR0
cFJlcXVlc3RFeGNlcHRpb24uY3BwICovOyB9OwotCQk5NzlEQzAzNzE2QTc5OTJFMDA4MDc3OTQg
LyogQ29tcGFjdEhUTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc5REMwMzQxNkE3OTkyMTAwODA3Nzk0IC8qIENvbXBhY3RIVE1MVG9rZW4u
aCAqLzsgfTsKLQkJOTc5REMwMzgxNkE3OTkzMzAwODA3Nzk0IC8qIEJhY2tncm91bmRIVE1MUGFy
c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlE
QzAzMjE2QTc5OTIxMDA4MDc3OTQgLyogQmFja2dyb3VuZEhUTUxQYXJzZXIuaCAqLzsgfTsKLQkJ
OTc5REMwMzkxNkE3OTkzOTAwODA3Nzk0IC8qIEJhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OURDMDMxMTZBNzk5
MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgKi87IH07CiAJCTk3OUY0M0Qz
MTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgz
QiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQxMDc1RTQ0QTAw
MDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0
aW9uU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdBQTNDQTMx
NDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovOyB9OwpAQCAtMzUwNyw4
ICszNTA0LDYgQEAKIAkJOTdDNzQwMTUxNjAzRjdBMTAwMTFGRjJEIC8qIEZlYXR1cmVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdDNzQw
MTMxNjAzRjdBMTAwMTFGRjJEIC8qIEZlYXR1cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3RDJBRDAzMTRCODIzQTYwMDkzREYz
MiAvKiBET01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0QyQUQwMTE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJv
cGVydHkuY3BwICovOyB9OwogCQk5N0QyQUQwNDE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3RDJBRDAyMTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk3REM2OUVDMTZCOUY1
MjkwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REM2OUU5MTZCOUY1MEUwMDhDRkQ2
RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCAqLzsgfTsKLQkJOTdEQzY5RUQxNkI5
RjUyQzAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REM2OUVBMTZCOUY1MEUwMDhDRkQ2
RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggKi87IH07CiAJCTk3RENFMjAxMTA4MDdD
NzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlz
dG9yeUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyog
SGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3RTQw
MjhGMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U0MDI4RDEzQTY5NkVEMDA5MTNENjcg
LyogSWNvbkNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTA0MTQsOSArMTA0MDksNiBAQAogCQk5
NzhEMDdDOTE0NUExMDE2MDA5NjkwOEQgLyogU1ZHRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0V4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3OEQwN0NCMTQ1QTEwMkUwMDk2OTA4RCAvKiBYUGF0aEV4Y2VwdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEV4Y2VwdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OEQwN0NEMTQ1QTEwMzcwMDk2
OTA4RCAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTk3OURDMDMxMTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5k
SFRNTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzlEQzAzMjE2QTc5OTIxMDA4MDc3
OTQgLyogQmFja2dyb3VuZEhUTUxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQmFja2dyb3VuZEhUTUxQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzlEQzAzNDE2QTc5OTIx
MDA4MDc3OTQgLyogQ29tcGFjdEhUTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDb21wYWN0SFRNTFRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ29tcGFjdEhUTUxUb2tl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4
M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYg
LyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV2ZW50VGFyZ2V0SGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1
MjQsOCArMTA1MTYsNiBAQAogCQk5N0M3NDAxMzE2MDNGN0ExMDAxMUZGMkQgLyogRmVhdHVyZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0QyQUQwMTE0QjgyM0E2MDA5M0RG
MzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0QyQUQwMjE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHA7IHBhdGggPSBwYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
REM2OUVBMTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
aDsgcGF0aCA9IHBhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RENFMjAwMTA4
MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIaXN0b3J5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0U0MDI4RDEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvbkNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5MjMsMTEgKzE3OTEzLDYgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURF
NjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovLAotCQkJCTk3REM2OUU5MTZCOUY1MEUwMDhDRkQ2
RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCAqLywKLQkJCQk5N0RDNjlFQTE2QjlG
NTBFMDA4Q0ZENkYgLyogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oICovLAotCQkJCTk3OURD
MDMxMTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgKi8sCi0JCQkJ
OTc5REMwMzIxNkE3OTkyMTAwODA3Nzk0IC8qIEJhY2tncm91bmRIVE1MUGFyc2VyLmggKi8sCi0J
CQkJOTc5REMwMzQxNkE3OTkyMTAwODA3Nzk0IC8qIENvbXBhY3RIVE1MVG9rZW4uaCAqLywKIAkJ
CQk5NzdCMzg0OTEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuY3BwICovLAog
CQkJCTk3N0IzODRBMTIyODgzRTkwMEI4MUZGOCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5oICovLAog
CQkJCTk3N0IzODRCMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAg
Ki8sCkBAIC0yMjk0NSw5ICsyMjkzMCw3IEBACiAJCQkJQkNBOEM4MUUxMUUzRDM2OTAwODEyRkI3
IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYw
QjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk5N0RDNjlFRDE2QjlGNTJDMDA4Q0ZENkYgLyogQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkYxN0QxNEQxQzAwNDIwQUExIC8q
IFVzZXJNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3OURDMDM4MTZBNzk5
MzMwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxMjRFRTgwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3OUU2MUNBMTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzA2OSw3ICsyMzA1Miw2IEBACiAJCQkJOTM4
MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJOTc5REMwMzcxNkE3OTkyRTAwODA3Nzk0IC8qIENvbXBhY3RIVE1MVG9rZW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3QzIzNjExMTA5N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAv
KiBDb21wb3NpdGVBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0
OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjYwNiw4ICsyNjU4OCw2IEBACiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2Jq
ZWN0Q2FjaGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJG
QjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQThD
QTVGMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJOTdEQzY5RUMxNkI5RjUyOTAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTc5REMwMzkxNkE3OTkzOTAwODA3Nzk0IC8qIEJh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTI0RUU3MEMyNjQx
Q0QwMDlFMjM0OSAvKiBCYXJQcm9wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUU2MUM5MTI2
Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3OUU2MUNCMTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTlhNjAzMTFhNTIyZmZkNzM3ZWM1NjkxOGYyM2ZjNjY5Yzg5ZTc5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKLQotI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtKCkKLSAgICA6IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCgwKQotICAg
ICwgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4KDApCi17Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaW5wdXQpCi17Ci0gICAgbV9jdXJy
ZW50LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcoaW5wdXQpKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZChpbnB1dCk7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y2xvc2UoKQot
ewotICAgIG1fY3VycmVudC5jbG9zZSgpOwotfQotCi1IVE1MSW5wdXRDaGVja3BvaW50IEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQotewotICAgIEhUTUxJbnB1
dENoZWNrcG9pbnQgY2hlY2twb2ludCA9IG1fY2hlY2twb2ludHMuc2l6ZSgpOwotICAgIG1fY2hl
Y2twb2ludHMuYXBwZW5kKENoZWNrcG9pbnQobV9jdXJyZW50LCBtX3NlZ21lbnRzLnNpemUoKSkp
OwotICAgIHJldHVybiBjaGVja3BvaW50OwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW06OmludmFsaWRhdGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5wdXRDaGVja3BvaW50IG5l
d0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCi17Ci0gICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgLy8gVGhlcmUgaXMg
bm90aGluZyB0byBkbyBmb3IgdGhlIGZpcnN0IHZhbGlkIGNoZWNrcG9pbnQuCi0gICAgaWYgKG1f
Zmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9PSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJ
bmRleCA+IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCk7Ci0gICAgY29uc3QgQ2hlY2twb2lu
dCYgbGFzdEludmFsaWRDaGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tuZXdGaXJzdFZhbGlkQ2hl
Y2twb2ludEluZGV4IC0gMV07Ci0KLSAgICBBU1NFUlQobV9maXJzdFZhbGlkU2VnbWVudEluZGV4
IDw9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVk
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OyBpIDwgbGFz
dEludmFsaWRDaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkK
LSAgICAgICAgbV9zZWdtZW50c1tpXSA9IFN0cmluZygpOwotICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwotCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7ICsraSkKLSAgICAgICAgbV9jaGVj
a3BvaW50c1tpXS5jbGVhcigpOwotICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IG5l
d0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNv
bnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCkKLXsKLSAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4
IDwgbV9jaGVja3BvaW50cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2tw
b2ludEluZGV4IGlzIGludmFsaWQuCi0gICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9
IG1fY2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKLSAgICBBU1NFUlQoIWNoZWNrcG9pbnQu
aXNOdWxsKCkpOwotCi0gICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwot
Ci0gICAgbV9jdXJyZW50ID0gY2hlY2twb2ludC5pbnB1dDsKLQotICAgIGZvciAoc2l6ZV90IGkg
PSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21l
bnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zZWdtZW50c1tpXS5pc051bGwo
KSk7Ci0gICAgICAgIG1fY3VycmVudC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNb
aV0pKTsKLSAgICB9Ci0KLSAgICBpZiAoIXVucGFyc2VkSW5wdXQuaXNFbXB0eSgpKQotICAgICAg
ICBtX2N1cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmcodW5wYXJzZWRJbnB1dCkpOwotCi0g
ICAgaWYgKGlzQ2xvc2VkICYmICFtX2N1cnJlbnQuaXNDbG9zZWQoKSkKLSAgICAgICAgbV9jdXJy
ZW50LmNsb3NlKCk7Ci0KLSAgICBBU1NFUlQobV9jdXJyZW50LmlzQ2xvc2VkKCkgPT0gaXNDbG9z
ZWQpOwotCi0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fY2hlY2twb2ludHMuY2xlYXIo
KTsKLSAgICBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSAwOwotICAgIG1fZmlyc3RWYWxp
ZFNlZ21lbnRJbmRleCA9IDA7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9I
VE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Vi
YTU2ZTM4ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW1faAotI2RlZmluZSBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtX2gKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2luY2x1
ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVm
IHNpemVfdCBIVE1MSW5wdXRDaGVja3BvaW50OwotCi1jbGFzcyBCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtKTsKLXB1YmxpYzoKLSAgICBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCk7Ci0KLSAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICBTZWdt
ZW50ZWRTdHJpbmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7IH0KLQotICAgIC8vIEFu
IEhUTUxJbnB1dENoZWNrcG9pbnQgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbCB0byByZXdp
bmRUbywgYXQgd2hpY2gKLSAgICAvLyBwb2ludCBhbGwgb3V0c3RhbmRpbmcgY2hlY2twb2ludHMg
YXJlIGludmFsaWRhdGVkLgotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgY3JlYXRlQ2hlY2twb2lu
dCgpOwotICAgIHZvaWQgcmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCwgY29uc3QgU3RyaW5n
JiB1bnBhcnNlZElucHV0KTsKLSAgICB2b2lkIGludmFsaWRhdGVDaGVja3BvaW50c0JlZm9yZShI
VE1MSW5wdXRDaGVja3BvaW50KTsKLQotICAgIHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2twb2ludHMuc2l6ZSgpIC0gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IENoZWNrcG9pbnQgewot
ICAgICAgICBDaGVja3BvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaSwgc2l6ZV90IG4pIDog
aW5wdXQoaSksIG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQobikgeyB9Ci0KLSAgICAg
ICAgU2VnbWVudGVkU3RyaW5nIGlucHV0OwotICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50
c0FscmVhZHlBcHBlbmRlZDsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBpbnB1dC5pc0VtcHR5KCkgJiYgIW51bWJlck9mU2VnbWVudHNBbHJl
YWR5QXBwZW5kZWQ7IH0KLSNlbmRpZgotICAgICAgICB2b2lkIGNsZWFyKCkgeyBpbnB1dC5jbGVh
cigpOyBudW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkID0gMDsgfQotICAgIH07Ci0KLSAg
ICBTZWdtZW50ZWRTdHJpbmcgbV9jdXJyZW50OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc2VnbWVu
dHM7Ci0gICAgVmVjdG9yPENoZWNrcG9pbnQ+IG1fY2hlY2twb2ludHM7Ci0KLSAgICAvLyBOb3Rl
OiBUaGVzZSBpbmRpY2llcyBtYXkgPT09IHZlY3Rvci5zaXplKCksIGluIHdoaWNoIGNhc2UgdGhl
cmUgYXJlIG5vIHZhbGlkIGNoZWNrcG9pbnRzL3NlZ21lbnRzIGF0IHRoaXMgdGltZS4KLSAgICBz
aXplX3QgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwotICAgIHNpemVfdCBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRN
TF9QQVJTRVIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
YWE4ODRmZjkzMTU3NDE1NzUwYjZiM2M3N2RiODhlZThjZWQ2Nzg4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2lu
Y2x1ZGUgIkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCi0KLSNpbmNsdWRlICJIVE1MRG9jdW1lbnRQ
YXJzZXIuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBPbiBhIG5ldHdvcmsgd2l0
aCBoaWdoIGxhdGVuY3kgYW5kIGhpZ2ggYmFuZHdpZHRoLCB1c2luZyBhIGRldmljZQotLy8gd2l0
aCBhIGZhc3QgQ1BVLCB3ZSBjb3VsZCBlbmQgdXAgc3BlY3VsYXRpdmVseSB0b2tlbml6aW5nCi0v
LyB0aGUgd2hvbGUgZG9jdW1lbnQsIHdlbGwgYWhlYWQgb2Ygd2hlbiB0aGUgbWFpbi10aHJlYWQg
YWN0dWFsbHkgbmVlZHMgaXQuCi0vLyBUaGlzIGlzIGEgd2FzdGUgb2YgbWVtb3J5IChhbmQgcG90
ZW50aWFsbHkgdGltZSBpZiB0aGUgc3BlY3VsYXRpb24gZmFpbHMpLgotLy8gU28gd2UgbGltaXQg
b3VyIG91dHN0YW5kaW5nIHNwZWN1bGF0aW9ucyBhcmJpdHJhcmlseSB0byAxMC4KLS8vIE91ciBt
YXhpbWFsIG1lbW9yeSBzcGVudCBzcGVjdWxhdGluZyB3aWxsIGJlIGFwcHJveGltYXRlbHk6Ci0v
LyBvdXRzdGFuZGluZ0NoZWNrcG9pbnRMaW1pdCAqIHBlbmRpbmdUb2tlbkxpbWl0ICogc2l6ZW9m
KENvbXBhY3RUb2tlbikKLS8vIFdlIHVzZSBhIHNlcGFyYXRlIGxvdyBhbmQgaGlnaCB3YXRlciBt
YXJrIHRvIGF2b2lkIGNvbnN0YW50bHkgdG9wcGluZwotLy8gb2ZmIHRoZSBtYWluIHRocmVhZCdz
IHRva2VuIGJ1ZmZlci4KLS8vIEF0IHRpbWUgb2Ygd3JpdGluZywgdGhpcyBpcyAxMCAqIDEwMDAg
KiAyOCBieXRlcyA9IGFwcG94IDI4MGtiIG9mIG1lbW9yeS4KLS8vIFRoZXNlIG51bWJlcnMgaGF2
ZSBub3QgYmVlbiB0dW5lZC4KLXN0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3Bv
aW50TGltaXQgPSAxMDsKLQotLy8gV2UgbGltaXQgb3VyIGNodWNrcyB0byAxMDAwIHRva2Vucywg
dG8gbWFrZSBzdXJlIHRoZSBtYWluCi0vLyB0aHJlYWQgaXMgbmV2ZXIgd2FpdGluZyBvbiB0aGUg
cGFyc2VyIHRocmVhZCBmb3IgdG9rZW5zLgotLy8gVGhpcyB3YXMgdHVuZWQgaW4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQwOC4KLXN0YXRpYyBjb25zdCBzaXpl
X3QgcGVuZGluZ1Rva2VuTGltaXQgPSAxMDAwOwotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwotCi0jaWZuZGVmIE5ERUJVRwotCi1zdGF0aWMgdm9pZCBjaGVja1RoYXRUb2tlbnNBcmVTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IENvbXBhY3RIVE1MVG9rZW5TdHJlYW0qIHRva2Vu
cykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy0+c2l6ZSgpOyArK2kpCi0g
ICAgICAgIEFTU0VSVCh0b2tlbnMtPmF0KGkpLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
KTsKLX0KLQotc3RhdGljIHZvaWQgY2hlY2tUaGF0UHJlbG9hZHNBcmVTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKGNvbnN0IFByZWxvYWRSZXF1ZXN0U3RyZWFtJiBwcmVsb2FkcykKLXsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWxvYWRzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NF
UlQocHJlbG9hZHNbaV0tPmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsKLX0KLQotI2Vu
ZGlmCi0KLUJhY2tncm91bmRIVE1MUGFyc2VyOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVm
UHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+PiByZWZlcmVuY2UsIE93blB0
cjxDb25maWd1cmF0aW9uPiBjb25maWcpCi0gICAgOiBtX3dlYWtGYWN0b3J5KHJlZmVyZW5jZSwg
dGhpcykKLSAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCi0gICAgLCBtX3Rv
a2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUoY29uZmlnLT5vcHRpb25zKSkKLSAgICAsIG1f
dHJlZUJ1aWxkZXJTaW11bGF0b3IoY29uZmlnLT5vcHRpb25zKQotICAgICwgbV9vcHRpb25zKGNv
bmZpZy0+b3B0aW9ucykKLSAgICAsIG1fcGFyc2VyKGNvbmZpZy0+cGFyc2VyKQotICAgICwgbV9w
ZW5kaW5nVG9rZW5zKGFkb3B0UHRyKG5ldyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKSkKLSAgICAs
IG1feHNzQXVkaXRvcihjb25maWctPnhzc0F1ZGl0b3IucmVsZWFzZSgpKQotICAgICwgbV9wcmVs
b2FkU2Nhbm5lcihjb25maWctPnByZWxvYWRTY2FubmVyLnJlbGVhc2UoKSkKLXsKLX0KLQotdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaW5wdXQpCi17Ci0g
ICAgQVNTRVJUKCFtX2lucHV0LmN1cnJlbnQoKS5pc0Nsb3NlZCgpKTsKLSAgICBtX2lucHV0LmFw
cGVuZChpbnB1dCk7Ci0gICAgcHVtcFRva2VuaXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjpyZXN1bWVGcm9tKE93blB0cjxDaGVja3BvaW50PiBjaGVja3BvaW50KQotewot
ICAgIG1fcGFyc2VyID0gY2hlY2twb2ludC0+cGFyc2VyOwotICAgIG1fdG9rZW4gPSBjaGVja3Bv
aW50LT50b2tlbi5yZWxlYXNlKCk7Ci0gICAgbV90b2tlbml6ZXIgPSBjaGVja3BvaW50LT50b2tl
bml6ZXIucmVsZWFzZSgpOwotICAgIG1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2V0U3RhdGUoY2hl
Y2twb2ludC0+dHJlZUJ1aWxkZXJTdGF0ZSk7Ci0gICAgbV9pbnB1dC5yZXdpbmRUbyhjaGVja3Bv
aW50LT5pbnB1dENoZWNrcG9pbnQsIGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQpOwotICAgIG1f
cHJlbG9hZFNjYW5uZXItPnJld2luZFRvKGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2tw
b2ludCk7Ci0gICAgcHVtcFRva2VuaXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFy
c2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0
Q2hlY2twb2ludCkKLXsKLSAgICAvLyBOb3RlLCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkg
YWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKLSAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRo
ZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBGSUZPIG9yZGVyLgotICAgIG1faW5w
dXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKGlucHV0Q2hlY2twb2ludCk7Ci0gICAgcHVt
cFRva2VuaXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQot
ewotICAgIG1hcmtFbmRPZkZpbGUoKTsKLSAgICBwdW1wVG9rZW5pemVyKCk7Ci19Ci0KLXZvaWQg
QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0b3AoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmb3JjZVBsYWludGV4dEZvclRleHREb2N1bWVudCgp
Ci17Ci0gICAgLy8gVGhpcyBpcyBvbmx5IHVzZWQgYnkgdGhlIFRleHREb2N1bWVudFBhcnNlciAo
YSBzdWJjbGFzcyBvZiBIVE1MRG9jdW1lbnRQYXJzZXIpCi0gICAgLy8gdG8gZm9yY2UgdXMgaW50
byB0aGUgUExBSU5URVhUIHN0YXRlIHcvbyB1c2luZyBhIDxwbGFpbnRleHQ+IHRhZy4KLSAgICAv
LyBUaGUgVGV4dERvY3VtZW50UGFyc2VyIHVzZXMgYSA8cHJlPiB0YWcgZm9yIGhpc3RvcmljYWwv
Y29tcGF0aWJpbGl0eSByZWFzb25zLgotICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
Om1hcmtFbmRPZkZpbGUoKQotewotICAgIEFTU0VSVCghbV9pbnB1dC5jdXJyZW50KCkuaXNDbG9z
ZWQoKSk7Ci0gICAgbV9pbnB1dC5hcHBlbmQoU3RyaW5nKCZrRW5kT2ZGaWxlTWFya2VyLCAxKSk7
Ci0gICAgbV9pbnB1dC5jbG9zZSgpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpw
dW1wVG9rZW5pemVyKCkKLXsKLSAgICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1bGF0aW5nIHVu
dGlsIHRoZSBtYWluIHRocmVhZCBoYXMgYWxtb3N0IGNhdWdodCB1cC4KLSAgICBpZiAobV9pbnB1
dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50TGlt
aXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIG1fc291
cmNlVHJhY2tlci5zdGFydChtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICpt
X3Rva2VuKTsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQuY3Vy
cmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQg
dGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4KLSAgICAgICAgICAgIHNlbmRUb2tlbnNUb01h
aW5UaHJlYWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1fc291
cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90
b2tlbik7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uKG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3Vy
cmVudCgpLmN1cnJlbnRDb2x1bW4oKSk7Ci0KLSAgICAgICAgICAgIGlmIChPd25QdHI8WFNTSW5m
bz4geHNzSW5mbyA9IG1feHNzQXVkaXRvci0+ZmlsdGVyVG9rZW4oRmlsdGVyVG9rZW5SZXF1ZXN0
KCptX3Rva2VuLCBtX3NvdXJjZVRyYWNrZXIsIG1fdG9rZW5pemVyLT5zaG91bGRBbGxvd0NEQVRB
KCkpKSkgewotICAgICAgICAgICAgICAgIHhzc0luZm8tPm1fdGV4dFBvc2l0aW9uID0gcG9zaXRp
b247Ci0gICAgICAgICAgICAgICAgbV9wZW5kaW5nWFNTSW5mb3MuYXBwZW5kKHhzc0luZm8ucmVs
ZWFzZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ29tcGFjdEhUTUxUb2tlbiB0
b2tlbihtX3Rva2VuLmdldCgpLCBUZXh0UG9zaXRpb24obV9pbnB1dC5jdXJyZW50KCkuY3VycmVu
dExpbmUoKSwgbV9pbnB1dC5jdXJyZW50KCkuY3VycmVudENvbHVtbigpKSk7Ci0KLSAgICAgICAg
ICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4odG9rZW4sIG1fcGVuZGluZ1ByZWxvYWRzKTsKLQot
ICAgICAgICAgICAgbV9wZW5kaW5nVG9rZW5zLT5hcHBlbmQodG9rZW4pOwotICAgICAgICB9Ci0K
LSAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKLQotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJT
aW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdl
dCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewot
ICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwotICAgICAgICAgICAgLy8gSWYg
d2UncmUgZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRocmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2
b2lkIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuCi0gICAgICAgICAgICBpZiAobV9pbnB1dC5v
dXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50TGltaXQp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnNlbmRUb2tlbnNUb01haW5UaHJlYWQoKQotewotICAgIGlmICht
X3BlbmRpbmdUb2tlbnMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWZuZGVmIE5E
RUJVRwotICAgIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQobV9w
ZW5kaW5nVG9rZW5zLmdldCgpKTsKLSAgICBjaGVja1RoYXRQcmVsb2Fkc0FyZVNhZmVUb1NlbmRU
b0Fub3RoZXJUaHJlYWQobV9wZW5kaW5nUHJlbG9hZHMpOwotI2VuZGlmCi0KLSAgICBPd25QdHI8
SFRNTERvY3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuaz4gY2h1bmsgPSBhZG9wdFB0cihuZXcgSFRN
TERvY3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuayk7Ci0gICAgY2h1bmstPnRva2VucyA9IG1fcGVu
ZGluZ1Rva2Vucy5yZWxlYXNlKCk7Ci0gICAgY2h1bmstPnByZWxvYWRzLnN3YXAobV9wZW5kaW5n
UHJlbG9hZHMpOwotICAgIGNodW5rLT54c3NJbmZvcy5zd2FwKG1fcGVuZGluZ1hTU0luZm9zKTsK
LSAgICBjaHVuay0+dG9rZW5pemVyU3RhdGUgPSBtX3Rva2VuaXplci0+c3RhdGUoKTsKLSAgICBj
aHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9IG1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc3RhdGUoKTsK
LSAgICBjaHVuay0+aW5wdXRDaGVja3BvaW50ID0gbV9pbnB1dC5jcmVhdGVDaGVja3BvaW50KCk7
Ci0gICAgY2h1bmstPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fcHJlbG9hZFNjYW5uZXIt
PmNyZWF0ZUNoZWNrcG9pbnQoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1
bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIsIG1f
cGFyc2VyLCBjaHVuay5yZWxlYXNlKCkpKTsKLQotICAgIG1fcGVuZGluZ1Rva2VucyA9IGFkb3B0
UHRyKG5ldyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDllMDA5YWNiYWZmN2YwMTMxY2ZmMzE5YWM4MmZmODNlZjk0NWZlZGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgQmFja2dyb3VuZEhUTUxQYXJzZXJfaAotI2RlZmluZSBCYWNrZ3JvdW5kSFRNTFBhcnNlcl9o
Ci0KLSNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0KLSNpbmNsdWRlICJCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtLmgiCi0jaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgotI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVy
LmgiCi0jaW5jbHVkZSAiSFRNTFNvdXJjZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJIVE1MVG9rZW4u
aCIKLSNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCi0jaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVy
U2ltdWxhdG9yLmgiCi0jaW5jbHVkZSAiWFNTQXVkaXRvckRlbGVnYXRlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKLWNsYXNzIFhTU0F1ZGl0b3I7
Ci0KLWNsYXNzIEJhY2tncm91bmRIVE1MUGFyc2VyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7Ci0gICAgICAgIEhUTUxQ
YXJzZXJPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2Vy
PiBwYXJzZXI7Ci0gICAgICAgIE93blB0cjxYU1NBdWRpdG9yPiB4c3NBdWRpdG9yOwotICAgICAg
ICBPd25QdHI8VG9rZW5QcmVsb2FkU2Nhbm5lcj4gcHJlbG9hZFNjYW5uZXI7Ci0gICAgfTsKLQot
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3Vu
ZEhUTUxQYXJzZXI+PiByZWZlcmVuY2UsIE93blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCi0g
ICAgewotICAgICAgICBuZXcgQmFja2dyb3VuZEhUTUxQYXJzZXIocmVmZXJlbmNlLCBjb25maWcp
OwotICAgICAgICAvLyBDYWxsZXIgbXVzdCBmcmVlIGJ5IGNhbGxpbmcgc3RvcCgpLgotICAgIH0K
LQotICAgIHN0cnVjdCBDaGVja3BvaW50IHsKLSAgICAgICAgV2Vha1B0cjxIVE1MRG9jdW1lbnRQ
YXJzZXI+IHBhcnNlcjsKLSAgICAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW47Ci0gICAgICAg
IE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXI7Ci0gICAgICAgIEhUTUxUcmVlQnVpbGRl
clNpbXVsYXRvcjo6U3RhdGUgdHJlZUJ1aWxkZXJTdGF0ZTsKLSAgICAgICAgSFRNTElucHV0Q2hl
Y2twb2ludCBpbnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIFRva2VuUHJlbG9hZFNjYW5uZXJDaGVj
a3BvaW50IHByZWxvYWRTY2FubmVyQ2hlY2twb2ludDsKLSAgICAgICAgU3RyaW5nIHVucGFyc2Vk
SW5wdXQ7Ci0gICAgfTsKLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgcmVzdW1lRnJvbShPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgc3RhcnRlZENodW5r
V2l0aENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCk7Ci0gICAgdm9pZCBmaW5pc2goKTsK
LSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgZm9yY2VQbGFpbnRleHRGb3JUZXh0RG9jdW1l
bnQoKTsKLQotcHJpdmF0ZToKLSAgICBCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdl
YWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+PiwgT3duUHRyPENvbmZpZ3VyYXRpb24+
KTsKLQotICAgIHZvaWQgbWFya0VuZE9mRmlsZSgpOwotICAgIHZvaWQgcHVtcFRva2VuaXplcigp
OwotICAgIHZvaWQgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwotCi0gICAgV2Vha1B0ckZhY3Rv
cnk8QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fd2Vha0ZhY3Rvcnk7Ci0gICAgQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbSBtX2lucHV0OwotICAgIEhUTUxTb3VyY2VUcmFja2VyIG1fc291cmNlVHJh
Y2tlcjsKLSAgICBPd25QdHI8SFRNTFRva2VuPiBtX3Rva2VuOwotICAgIE93blB0cjxIVE1MVG9r
ZW5pemVyPiBtX3Rva2VuaXplcjsKLSAgICBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IgbV90cmVl
QnVpbGRlclNpbXVsYXRvcjsKLSAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7Ci0gICAg
V2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IG1fcGFyc2VyOwotCi0gICAgT3duUHRyPENvbXBh
Y3RIVE1MVG9rZW5TdHJlYW0+IG1fcGVuZGluZ1Rva2VuczsKLSAgICBQcmVsb2FkUmVxdWVzdFN0
cmVhbSBtX3BlbmRpbmdQcmVsb2FkczsKLSAgICBYU1NJbmZvU3RyZWFtIG1fcGVuZGluZ1hTU0lu
Zm9zOwotCi0gICAgT3duUHRyPFhTU0F1ZGl0b3I+IG1feHNzQXVkaXRvcjsKLSAgICBPd25QdHI8
VG9rZW5QcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKLX07Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMWZhMTMyNzAwNTkwZmY4M2U0ZTg4NzA5NTdiNjk3ZGE2YjJjMWFmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQotCi0jaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgotCi0jaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIlhTU0F1ZGl0b3JEZWxlZ2F0ZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiAgewotICAg
IHVuc2lnbmVkIGJpdGZpZWxkczsKLSAgICBIVE1MSWRlbnRpZmllciBkYXRhOwotICAgIFZlY3Rv
cjxBdHRyaWJ1dGU+IHZlY3RvcjsKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uOwotfTsK
LQotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbXBhY3RIVE1MVG9rZW4pID09IHNpemVvZihTYW1l
U2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiksIENvbXBhY3RIVE1MVG9rZW5fc2hvdWxkX3N0YXlfc21h
bGwpOwotCi1Db21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tl
biogdG9rZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdGV4dFBvc2l0aW9uKQotICAgIDogbV90eXBl
KHRva2VuLT50eXBlKCkpCi0gICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCi0gICAgLCBtX2Rv
Y3R5cGVGb3JjZXNRdWlya3MoZmFsc2UpCi0gICAgLCBtX3RleHRQb3NpdGlvbih0ZXh0UG9zaXRp
b24pCi17Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0
aWFsaXplZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IEhUTUxJZGVu
dGlmaWVyKHRva2VuLT5uYW1lKCksIExpa2VseThCaXQpOwotICAgICAgICAvLyBUaGVyZSBpcyBv
bmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcg
dGhlCi0gICAgICAgIC8vIHNpemUgb2YgQ29tcGFjdEhUTUxUb2tlbiwgd2UganVzdCB1c2UgdGhl
IG1fYXR0cmlidXRlcyB2ZWN0b3IuCi0gICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmli
dXRlKEhUTUxJZGVudGlmaWVyKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCksIExpa2VseThCaXQp
LCBTdHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKLSAgICAgICAgbV9kb2N0eXBl
Rm9yY2VzUXVpcmtzID0gdG9rZW4tPmZvcmNlUXVpcmtzKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChW
ZWN0b3I8SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5h
dHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytp
dCkKLSAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlm
aWVyKGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2li
bGUoaXQtPnZhbHVlKSkpOwotICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1M
VG9rZW46OkVuZFRhZzoKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2lu
ZygpOwotICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW46OkNvbW1l
bnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewotICAgICAgICBtX2lzQWxsOEJp
dERhdGEgPSB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpOwotICAgICAgICBtX2RhdGEgPSBIVE1MSWRl
bnRpZmllcih0b2tlbi0+ZGF0YSgpLCB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpID8gRm9yY2U4Qml0
IDogRm9yY2UxNkJpdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1j
b25zdCBDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGUqIENvbXBhY3RIVE1MVG9rZW46OmdldEF0
dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKLXsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmICh0aHJlYWRTYWZlTWF0Y2gobV9hdHRyaWJ1dGVzLmF0KGkpLm5hbWUsIG5hbWUpKQotICAg
ICAgICAgICAgcmV0dXJuICZtX2F0dHJpYnV0ZXMuYXQoaSk7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCi1ib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0Ci17Ci0gICAgZm9yIChWZWN0b3I8QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2F0dHJpYnV0ZXMuYmVnaW4oKTsgaXQgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgIGlmICghaXQtPm5hbWUuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXQtPnZhbHVlLmlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICByZXR1cm4gbV9kYXRhLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOwotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGZmYTRhZTQzY2QxZjNlYmYwZTNlYmMzZTg5ZWE0OTRmNjJmNTMzMDkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBDb21wYWN0SFRNTFRva2VuX2gKLSNkZWZpbmUgQ29tcGFjdEhUTUxUb2tlbl9o
Ci0KLSNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0KLSNpbmNsdWRlICJIVE1MSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBRdWFsaWZpZWROYW1lOwot
Ci1jbGFzcyBDb21wYWN0SFRNTFRva2VuIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQXR0cmlidXRl
IHsKLSAgICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQotICAgICAgICAgICAgOiBuYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHZh
bHVlKHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBIVE1MSWRlbnRpZmll
ciBuYW1lOwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgfTsKLQotICAgIENvbXBhY3RIVE1M
VG9rZW4oY29uc3QgSFRNTFRva2VuKiwgY29uc3QgVGV4dFBvc2l0aW9uJik7Ci0KLSAgICBib29s
IGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi0gICAgSFRNTFRva2VuOjpU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVG9rZW46OlR5cGU+KG1f
dHlwZSk7IH0KLSAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX3NlbGZD
bG9zaW5nOyB9Ci0gICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fs
bDhCaXREYXRhOyB9Ci0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KLSAgICBjb25zdCBBdHRyaWJ1dGUqIGdldEF0
dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IFRleHRQ
b3NpdGlvbiYgdGV4dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb247IH0K
LQotICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28g
dG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKLSAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4s
IHdlIGp1c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMgdmVjdG9yLgotICAgIGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBd
Lm5hbWU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KLSAgICBib29sIGRvY3R5cGVGb3JjZXNRdWly
a3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0KLQotcHJpdmF0ZToK
LSAgICB1bnNpZ25lZCBtX3R5cGUgOiA0OwotICAgIHVuc2lnbmVkIG1fc2VsZkNsb3NpbmcgOiAx
OwotICAgIHVuc2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7Ci0gICAgdW5zaWduZWQgbV9kb2N0
eXBlRm9yY2VzUXVpcmtzOiAxOwotCi0gICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFt
ZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKLSAgICBWZWN0
b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7Ci0gICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0
aW9uOwotfTsKLQotdHlwZWRlZiBWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4gQ29tcGFjdEhUTUxU
b2tlblN0cmVhbTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VS
KQotCi0jZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221549</attachid>
            <date>2014-01-18 08:37:25 -0800</date>
            <delta_ts>2014-01-18 08:43:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127219-20140118083725.patch</filename>
            <type>text/plain</type>
            <size>78865</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU0Njk2YzlmMTM4YThm
ZmYwZjFhOWM4M2VkZDgxMmY3ZjVmYTBhMy4uNTljNWY3NjlhYWU5ZmEwMmQ3ZWIwMGE5OGRmODRj
ODNiYWU2ZDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTAxLTE4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbGVz
IG9ubHkgdXNlZCBieSB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzIxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTMzMzEyNzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9t
aWNIVE1MVG9rZW4uaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxU
b2tlbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlclNpbXVs
YXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
U2ltdWxhdG9yLmg6IFJlbW92ZWQuCisKIDIwMTQtMDEtMTcgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1pY3JvLW9wdGltaXplIFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpjb21wdXRlZENTU1BhZGRpbmcoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzM2Yjcx
OWI3NDdkMTVjZGFiOTVmODM0NDRiMjdhMjlmYzFmMjYyNi4uMDA0ZDhiMzUyNzJjZTE3NTRhMmQ5
ODBjMDg4YWUzOGVlNzgwY2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1MzcsMTcgKzE1
MzcsMTMgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgaHRtbC9mb3Jtcy9GaWxlSWNvbkxv
YWRlci5jcHAKIAotICAgIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3Bw
Ci0gICAgaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJz
ZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCi0gICAgaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tl
bi5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKICAgICBodG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTEVsZW1l
bnRTdGFjay5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcAogICAgIGh0
bWwvcGFyc2VyL0hUTUxFbnRpdHlTZWFyY2guY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdC5jcHAKLSAgICBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAK
ICAgICBodG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0aW9u
cy5jcHAKQEAgLTE1NTksNyArMTU1NSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKLSAgICBodG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNw
cAogICAgIGh0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNmE4MmJkMDdiMjcxYmI3Y2IwZTlhNDlmM2ExMjZkMmIxZGM1
MWE2Yi4uOTFiNzE3OTRjNzlkM2YyMDJmNDEzMjkyMjkzYmU2N2MwZTQ5NzIwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNTc3LDE0ICszNTc3LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q1NTUHJlbG9hZFNjYW5uZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1M
VG9rZW4uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IFwKQEAgLTM1OTgsOCArMzU5Miw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmggXAotCVNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTElucHV0U3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5oIFwKQEAgLTM2MjYsOCArMzYxOCw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAzYTJiYWVhMDA2MTc0MzgyZGZl
NDQ2YzU4MDgwOWYwYThkY2Q4MGYyLi5jNjkxYzljNDc3NGZjZGExYjU3MGYwNWQ2ZDIxZjM1ZDI1
ZTlmNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTY1NzgsNyArNjU3OCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXGNhbnZhc1xXZWJHTFRleHR1cmUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxjYW52YXNcV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxjYW52YXNcV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAi
IC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmll
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJh
Y2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFx0cmFja1xBdWRpb1Ry
YWNrTGlzdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHRyYWNrXFRl
eHRUcmFja0N1ZUdlbmVyaWMuY3BwIiAvPgpAQCAtMTU2OTksOSArMTU2OTgsNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxWYWxpZGF0aW9uTWVzc2FnZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXFdlZWtJbnB1dFR5cGUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxmb3Jtc1xGaWxlSWNvbkxvYWRlci5jcHAiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEJh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXENvbXBhY3RIVE1MVG9rZW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTERvY3VtZW50UGFyc2Vy
LmNwcCIgLz4KQEAgLTIwNTczLDggKzIwNTY5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxcV2Vla0lucHV0VHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxmb3Jtc1xGaWxlSWNvbkxvYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caHRtbFxwYXJzZXJcQXRvbWljSFRNTFRva2VuLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQ29tcGFjdEhUTUxUb2tlbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQ1NTUHJlbG9hZFNjYW5uZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxDb25zdHJ1Y3Rp
b25TaXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1M
RG9jdW1lbnRQYXJzZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA1MTVmZDliYzY0YjRkZDAzNGM4
ZGI3YzlkZDMwNzI1MjhmNjI5OTllLi4yNWQyMmI3YWM2N2U2MDFjMmVjYjYyZjlmYzVlYTgzNWM3
MDYzYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00MTE5LDEyICs0MTE5LDYgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGh0bWxcZm9ybXNcRmlsZUljb25Mb2FkZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+aHRtbFxmb3JtczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAi
PgotICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxQYXJz
ZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXENvbXBhY3RIVE1M
VG9rZW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTUxOTcsOSArNTE5MSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcSGl0VGVzdExvY2F0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmlu
ZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxwYXJzZXJcSFRNTElkZW50aWZpZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJz
ZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNccXVvdGFcTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCI+CiAgICAgICA8RmlsdGVy
Pk1vZHVsZXNccXVvdGE8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExMjQ2LDkgKzEx
MjM3LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEF0b21pY0hU
TUxUb2tlbi5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEJhY2tncm91
bmRIVE1MUGFyc2VyLmgiPgotICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQ29t
cGFjdEhUTUxUb2tlbi5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyNGUxOWNjNTdjZjFhOGRjNDIzNDVlYjVlZDVjYzg0ZTE1NmVi
OTcwLi5mNTU0ODE2Nzg5ZTAyNGM1ZTAyZDkwZGUzMTFiZDRiODk1YTIxMTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDE1
LDkgKzM0MTUsNiBAQAogCQk5NzhEMDdDQTE0NUExMDE2MDA5NjkwOEQgLyogU1ZHRXhjZXB0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEQw
N0M5MTQ1QTEwMTYwMDk2OTA4RCAvKiBTVkdFeGNlcHRpb24uY3BwICovOyB9OwogCQk5NzhEMDdD
QzE0NUExMDJFMDA5NjkwOEQgLyogWFBhdGhFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4RDA3Q0IxNDVBMTAyRTAwOTY5MDhEIC8q
IFhQYXRoRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJOTc4RDA3Q0UxNDVBMTAzNzAwOTY5MDhEIC8q
IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEQwN0NEMTQ1QTEwMzcwMDk2OTA4RCAvKiBYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbi5jcHAgKi87IH07Ci0JCTk3OURDMDM3MTZBNzk5MkUwMDgwNzc5NCAvKiBD
b21wYWN0SFRNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzlEQzAzNDE2QTc5OTIxMDA4MDc3OTQgLyogQ29tcGFjdEhUTUxUb2tlbi5oICov
OyB9OwotCQk5NzlEQzAzODE2QTc5OTMzMDA4MDc3OTQgLyogQmFja2dyb3VuZEhUTUxQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OURDMDMy
MTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5oICovOyB9OwotCQk5NzlE
QzAzOTE2QTc5OTM5MDA4MDc3OTQgLyogQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5REMwMzExNkE3OTkyMTAw
ODA3Nzk0IC8qIEJhY2tncm91bmRIVE1MUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDMxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8q
IE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovOyB9OwogCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4
M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25T
Y2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBM0NBMzE0NTIz
N0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi87IH07CkBAIC0zNTA3LDggKzM1
MDQsNiBAQAogCQk5N0M3NDAxNTE2MDNGN0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0M3NDAxMzE2
MDNGN0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8q
IERPTVdpbmRvd1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3RDJBRDAxMTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0
eS5jcHAgKi87IH07CiAJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdE
MkFEMDIxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTdEQzY5RUMxNkI5RjUyOTAw
OENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8q
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwICovOyB9OwotCQk5N0RDNjlFRDE2QjlGNTJD
MDA4Q0ZENkYgLyogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQzY5RUExNkI5RjUwRTAwOENGRDZGIC8q
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCAqLzsgfTsKIAkJOTdEQ0UyMDExMDgwN0M3NTAw
NTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTk3RENFMjAyMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0
b3J5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdEQ0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdFNDAyOEYx
M0E2OTZFRDAwOTEzRDY3IC8qIEljb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTQwMjhEMTNBNjk2RUQwMDkxM0Q2NyAvKiBJ
Y29uQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC0zNTM2LDggKzM1MzEsNiBAQAogCQk5QjQxNzA2
NTEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNDE3MDYzMTI1NjYyQjMw
MDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwICovOyB9OwogCQk5QjUwQjFE
RTE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZv
cm1OYW1lZEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2QzQxNTIx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5QjdFNzhCRDE2RjE2Q0M2MDAxMjY5
MTQgLyogSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCN0U3OEJBMTZGMTZDQUUwMDEyNjkxNCAvKiBIVE1M
VHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwICovOyB9OwotCQk5QjdFNzhCRTE2RjE2Q0M4MDAxMjY5
MTQgLyogSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjdFNzhCQjE2RjE2Q0FFMDAxMjY5MTQgLyogSFRNTFRy
ZWVCdWlsZGVyU2ltdWxhdG9yLmggKi87IH07CiAJCTlCQTI3M0Y0MTcyMjA2QkIwMDk3Q0U0NyAv
KiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNh
bFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovOyB9OwogCQk5QkFCNkM2QzEyNTUwNjMxMDAxNjI2
RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUJBQjZDNkQx
MjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRp
dGluZ1N0eWxlLmNwcCAqLzsgfTsKQEAgLTM5OTcsNyArMzk5MCw2IEBACiAJCUE4OEFENTJGMDk1
MjRCOTIwMDFERDE5NiAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NUQ3QTJGMDg3OUVCQTkwMDZBOTE3MiAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJQTg4REQ0ODcwQjQ2MjlBMzAwQzAyOTkw
IC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTg4REQ0ODYwQjQ2MjlBMzAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxT
dGF0ZS5oICovOyB9OwogCQlBODhERDQ4OTBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNh
bFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovOyB9
OwotCQlBODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTU3MDlFMTZFOUJENTkw
MDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4OTk0MzI4MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJ
bWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5
OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAy
IC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4OTk0MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87
IH07CiAJCUE4OUNDQzUyMEY0NEU5ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODlDQ0M1MDBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3Bw
ICovOyB9OwpAQCAtMTA0MTQsOSArMTA0MDYsNiBAQAogCQk5NzhEMDdDOTE0NUExMDE2MDA5Njkw
OEQgLyogU1ZHRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR0V4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OEQw
N0NCMTQ1QTEwMkUwMDk2OTA4RCAvKiBYUGF0aEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3OEQwN0NEMTQ1QTEwMzcwMDk2OTA4RCAvKiBYTUxIdHRwUmVxdWVz
dEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxI
dHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
OURDMDMxMTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA7
IHBhdGggPSBwYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5NzlEQzAzMjE2QTc5OTIxMDA4MDc3OTQgLyogQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaDsgcGF0aCA9IHBhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5NzlEQzAzNDE2QTc5OTIxMDA4MDc3OTQgLyogQ29tcGFjdEhU
TUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYWN0SFRNTFRv
a2VuLmg7IHBhdGggPSBwYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDIxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50VGFyZ2V0SGVhZGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MjQsOCArMTA1MTMsNiBAQAogCQk5
N0M3NDAxMzE2MDNGN0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5N0QyQUQwMTE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVy
dHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93UHJv
cGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0QyQUQwMjE0QjgyM0E2
MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NV2luZG93UHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbS5jcHA7IHBhdGggPSBwYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3REM2OUVBMTZCOUY1MEUwMDhDRkQ2
RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDsgcGF0aCA9IHBhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5Q29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0
b3J5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaXN0b3J5
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U0MDI4RDEzQTY5
NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSWNvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA1NTcsOCArMTA1NDQsNiBAQAogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMg
LyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCNTBCMURDMTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFtZWRJdGVt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1OYW1lZEl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nV2l0aERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjdFNzhC
QTE2RjE2Q0FFMDAxMjY5MTQgLyogSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5j
cHA7IHBhdGggPSBwYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUI3RTc4QkIxNkYxNkNBRTAwMTI2OTE0IC8qIEhUTUxUcmVl
QnVpbGRlclNpbXVsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1M
VHJlZUJ1aWxkZXJTaW11bGF0b3IuaDsgcGF0aCA9IHBhcnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11
bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBMjczRjMxNzIyMDZCQjAw
OTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGlu
Z1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QjEyNTUwNjMxMDAxNjI2RDQg
LyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA2Myw3
ICsxMTA0OCw2IEBACiAJCUE4ODNERjI2MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2libGVTZWxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4REQ0ODYwQjQ2MjlBMzAwQzAyOTkw
IC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXRoVHJhdmVyc2FsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4
REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRN
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTElkZW50
aWZpZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwSW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5Q0NDNTAwRjQ0RTk4MTAwQjVE
QTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3OTIzLDExICsxNzkwNyw2IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAv
KiBBdG9taWNIVE1MVG9rZW4uaCAqLywKLQkJCQk5N0RDNjlFOTE2QjlGNTBFMDA4Q0ZENkYgLyog
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgKi8sCi0JCQkJOTdEQzY5RUExNkI5RjUwRTAw
OENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCAqLywKLQkJCQk5NzlEQzAzMTE2
QTc5OTIxMDA4MDc3OTQgLyogQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwICovLAotCQkJCTk3OURD
MDMyMTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5oICovLAotCQkJCTk3
OURDMDM0MTZBNzk5MjEwMDgwNzc5NCAvKiBDb21wYWN0SFRNTFRva2VuLmggKi8sCiAJCQkJOTc3
QjM4NDkxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxvYWRTY2FubmVyLmNwcCAqLywKIAkJCQk5
NzdCMzg0QTEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuaCAqLywKIAkJCQk5
NzdCMzg0QjEyMjg4M0U5MDBCODFGRjggLyogSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwICovLApA
QCAtMTc5NDQsNyArMTc5MjMsNiBAQAogCQkJCTk3N0IzODU0MTIyODgzRTkwMEI4MUZGOCAvKiBI
VE1MRW50aXR5VGFibGUuaCAqLywKIAkJCQk5NzdCMzg1NTEyMjg4M0U5MDBCODFGRjggLyogSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgKi8sCiAJCQkJOTc3QjM4NTYxMjI4ODNFOTAwQjgx
RkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCAqLywKLQkJCQlBODk1NzA5RTE2RTlC
RDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCAqLywKIAkJCQk5N0JDODQ5QTEyMzcwQTRC
MDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggKi8sCiAJCQkJMkJFOEUyQzgxMkE1OEEwMTAw
RkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi8sCiAJCQkJMkJFOEUyQzYxMkE1
ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oICovLApAQCAtMTc5NzAsOCAr
MTc5NDgsNiBAQAogCQkJCTk3N0IzODVGMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVy
LmggKi8sCiAJCQkJOTc3QjM3MjExMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVlQnVpbGRlci5j
cHAgKi8sCiAJCQkJOTc3QjM3MjIxMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVlQnVpbGRlci5o
ICovLAotCQkJCTlCN0U3OEJBMTZGMTZDQUUwMDEyNjkxNCAvKiBIVE1MVHJlZUJ1aWxkZXJTaW11
bGF0b3IuY3BwICovLAotCQkJCTlCN0U3OEJCMTZGMTZDQUUwMDEyNjkxNCAvKiBIVE1MVHJlZUJ1
aWxkZXJTaW11bGF0b3IuaCAqLywKIAkJCQk5NzdCMzg2MDEyMjg4M0U5MDBCODFGRjggLyogSFRN
TFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLAogCQkJCTk3N0IzODYxMTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovLAogCQkJCUE4ODA1QUYxMTZDOTZBRUEwMDBFOUQ5
OCAvKiBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oICovLApAQCAtMjI5NDUsOSArMjI5MjEsNyBA
QAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9y
d2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3
IC8qIEJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTdEQzY5RUQxNkI5RjUy
QzAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTJGMTdEMTREMUMwMDQyMEFBMSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk5NzlEQzAzODE2QTc5OTMzMDA4MDc3OTQgLyogQmFja2dyb3VuZEhU
TUxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAv
KiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQg
LyogQmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0MxMjZD
QTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjMwNjksNyArMjMwNDMsNiBAQAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1MiAvKiBD
b2xvclNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RENDU0RTEyMzZDOTVDMDA5QTc5ODUg
LyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBE
NzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3OURDMDM3MTZBNzk5MkUwMDgw
Nzc5NCAvKiBDb21wYWN0SFRNTFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0MyMzYxMTEw
OTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTZGRTExNjBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzMwOURERDA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM5OTksNyArMjM5NzIsNiBAQAogCQkJCUNE
OEI1QTQ5MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFQTdDQUYwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxIUkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4NzFERTI3MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSHRtbEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4OTU3MEEwMTZFOUJENTkwMDE4NEU1NSAvKiBI
VE1MSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjQxN0QxNDE1MTAwN0ZG
ODQyIC8qIEpTUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODcxREUyQTBBMTUyQUM4MDBCMTJBNjggLyogSFRNTElGcmFtZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3RDJEMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MSW1hZ2VFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDc1LDcgKzI0MDQ3LDYgQEAKIAkJCQk5NzdCMzg3
ODEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDcwNzU2OEMxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3N0IzNzI2MTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTlCN0U3OEJFMTZGMTZDQzgwMDEyNjkxNCAvKiBIVE1MVHJlZUJ1
aWxkZXJTaW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUYyMEExOTE2REYwMEE4
RUY1RiAvKiBIVE1MVUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBQjBD
RDYzMzEwMDBGQURBNzUgLyogSFRNTFZpZGVvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LApAQCAtMjY2MDYsOCArMjY1NzcsNiBAQAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2
OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0E4Q0E1RjExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTk3REM2OUVDMTZCOUY1MjkwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3OURDMDM5MTZBNzk5MzkwMDgwNzc5
NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEyNEVF
NzBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzlF
NjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzlFNjFDQjEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDQ1LDcgKzI3NDE0LDYgQEAKIAkJCQkwNzA3
NTY4QjE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM3MjUxMjI4NzIxNzAwQjgxRkY4IC8q
IEhUTUxUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5QjdFNzhCRDE2RjE2Q0M2
MDAxMjY5MTQgLyogSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4RUE3OUYzMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxpc3RFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0NDYxM0FBMENENjMzMTAwMEZBREE3NSAvKiBIVE1MVmlkZW9FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODM4MTgyMkYxRUIwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaAppbmRleCA0MTViMGQyNmM0MDQ4ZDRhNzI4
MzNmODMwYzNiYzYzNjA5OTRlMzg1Li4yZmM0Njg1MTA0MzBhY2Y4MWQ5YTRkMTEzMWYxMzA4MGYw
ZWRkZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBBdG9taWNIVE1MVG9rZW5faAogCiAjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTlhNjAzMTFhNTIyZmZkNzM3ZWM1NjkxOGYyM2ZjNjY5Yzg5ZTc5Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
LQotI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtKCkKLSAgICA6IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCgwKQotICAgICwgbV9m
aXJzdFZhbGlkU2VnbWVudEluZGV4KDApCi17Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaW5wdXQpCi17Ci0gICAgbV9jdXJyZW50LmFw
cGVuZChTZWdtZW50ZWRTdHJpbmcoaW5wdXQpKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZChpbnB1
dCk7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y2xvc2UoKQotewotICAg
IG1fY3VycmVudC5jbG9zZSgpOwotfQotCi1IVE1MSW5wdXRDaGVja3BvaW50IEJhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQotewotICAgIEhUTUxJbnB1dENoZWNr
cG9pbnQgY2hlY2twb2ludCA9IG1fY2hlY2twb2ludHMuc2l6ZSgpOwotICAgIG1fY2hlY2twb2lu
dHMuYXBwZW5kKENoZWNrcG9pbnQobV9jdXJyZW50LCBtX3NlZ21lbnRzLnNpemUoKSkpOwotICAg
IHJldHVybiBjaGVja3BvaW50OwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06
OmludmFsaWRhdGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5wdXRDaGVja3BvaW50IG5ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXgpCi17Ci0gICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3Bv
aW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgLy8gVGhlcmUgaXMgbm90aGlu
ZyB0byBkbyBmb3IgdGhlIGZpcnN0IHZhbGlkIGNoZWNrcG9pbnQuCi0gICAgaWYgKG1fZmlyc3RW
YWxpZENoZWNrcG9pbnRJbmRleCA9PSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA+
IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCk7Ci0gICAgY29uc3QgQ2hlY2twb2ludCYgbGFz
dEludmFsaWRDaGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tuZXdGaXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4IC0gMV07Ci0KLSAgICBBU1NFUlQobV9maXJzdFZhbGlkU2VnbWVudEluZGV4IDw9IGxh
c3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OyBpIDwgbGFzdEludmFs
aWRDaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKLSAgICAg
ICAgbV9zZWdtZW50c1tpXSA9IFN0cmluZygpOwotICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRl
eCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVk
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgaSA8
IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7ICsraSkKLSAgICAgICAgbV9jaGVja3BvaW50
c1tpXS5jbGVhcigpOwotICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IG5ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXg7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNvbnN0IFN0
cmluZyYgdW5wYXJzZWRJbnB1dCkKLXsKLSAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4IDwgbV9j
aGVja3BvaW50cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2twb2ludElu
ZGV4IGlzIGludmFsaWQuCi0gICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1fY2hl
Y2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKLSAgICBBU1NFUlQoIWNoZWNrcG9pbnQuaXNOdWxs
KCkpOwotCi0gICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwotCi0gICAg
bV9jdXJyZW50ID0gY2hlY2twb2ludC5pbnB1dDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSBjaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zZWdtZW50c1tpXS5pc051bGwoKSk7Ci0g
ICAgICAgIG1fY3VycmVudC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsK
LSAgICB9Ci0KLSAgICBpZiAoIXVucGFyc2VkSW5wdXQuaXNFbXB0eSgpKQotICAgICAgICBtX2N1
cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmcodW5wYXJzZWRJbnB1dCkpOwotCi0gICAgaWYg
KGlzQ2xvc2VkICYmICFtX2N1cnJlbnQuaXNDbG9zZWQoKSkKLSAgICAgICAgbV9jdXJyZW50LmNs
b3NlKCk7Ci0KLSAgICBBU1NFUlQobV9jdXJyZW50LmlzQ2xvc2VkKCkgPT0gaXNDbG9zZWQpOwot
Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fY2hlY2twb2ludHMuY2xlYXIoKTsKLSAg
ICBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSAwOwotICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IDA7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW1faAotI2RlZmluZSBCYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtX2gKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2luY2x1ZGUgIlNl
Z21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIHNpemVf
dCBIVE1MSW5wdXRDaGVja3BvaW50OwotCi1jbGFzcyBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKTsK
LXB1YmxpYzoKLSAgICBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCk7Ci0KLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICBTZWdtZW50ZWRT
dHJpbmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7IH0KLQotICAgIC8vIEFuIEhUTUxJ
bnB1dENoZWNrcG9pbnQgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbCB0byByZXdpbmRUbywg
YXQgd2hpY2gKLSAgICAvLyBwb2ludCBhbGwgb3V0c3RhbmRpbmcgY2hlY2twb2ludHMgYXJlIGlu
dmFsaWRhdGVkLgotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgY3JlYXRlQ2hlY2twb2ludCgpOwot
ICAgIHZvaWQgcmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCwgY29uc3QgU3RyaW5nJiB1bnBh
cnNlZElucHV0KTsKLSAgICB2b2lkIGludmFsaWRhdGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5w
dXRDaGVja3BvaW50KTsKLQotICAgIHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hlY2twb2ludHMuc2l6ZSgpIC0gbV9maXJzdFZhbGlkQ2hlY2tw
b2ludEluZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IENoZWNrcG9pbnQgewotICAgICAg
ICBDaGVja3BvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaSwgc2l6ZV90IG4pIDogaW5wdXQo
aSksIG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQobikgeyB9Ci0KLSAgICAgICAgU2Vn
bWVudGVkU3RyaW5nIGlucHV0OwotICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50c0FscmVh
ZHlBcHBlbmRlZDsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiBpbnB1dC5pc0VtcHR5KCkgJiYgIW51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7IH0KLSNlbmRpZgotICAgICAgICB2b2lkIGNsZWFyKCkgeyBpbnB1dC5jbGVhcigpOyBu
dW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkID0gMDsgfQotICAgIH07Ci0KLSAgICBTZWdt
ZW50ZWRTdHJpbmcgbV9jdXJyZW50OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc2VnbWVudHM7Ci0g
ICAgVmVjdG9yPENoZWNrcG9pbnQ+IG1fY2hlY2twb2ludHM7Ci0KLSAgICAvLyBOb3RlOiBUaGVz
ZSBpbmRpY2llcyBtYXkgPT09IHZlY3Rvci5zaXplKCksIGluIHdoaWNoIGNhc2UgdGhlcmUgYXJl
IG5vIHZhbGlkIGNoZWNrcG9pbnRzL3NlZ21lbnRzIGF0IHRoaXMgdGltZS4KLSAgICBzaXplX3Qg
bV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwotICAgIHNpemVfdCBtX2ZpcnN0VmFsaWRTZWdt
ZW50SW5kZXg7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJT
RVIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWE4ODRm
ZjkzMTU3NDE1NzUwYjZiM2M3N2RiODhlZThjZWQ2Nzg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2luY2x1ZGUg
IkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCi0KLSNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIu
aCIKLSNpbmNsdWRlICJIVE1MUGFyc2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBPbiBhIG5ldHdvcmsgd2l0aCBoaWdo
IGxhdGVuY3kgYW5kIGhpZ2ggYmFuZHdpZHRoLCB1c2luZyBhIGRldmljZQotLy8gd2l0aCBhIGZh
c3QgQ1BVLCB3ZSBjb3VsZCBlbmQgdXAgc3BlY3VsYXRpdmVseSB0b2tlbml6aW5nCi0vLyB0aGUg
d2hvbGUgZG9jdW1lbnQsIHdlbGwgYWhlYWQgb2Ygd2hlbiB0aGUgbWFpbi10aHJlYWQgYWN0dWFs
bHkgbmVlZHMgaXQuCi0vLyBUaGlzIGlzIGEgd2FzdGUgb2YgbWVtb3J5IChhbmQgcG90ZW50aWFs
bHkgdGltZSBpZiB0aGUgc3BlY3VsYXRpb24gZmFpbHMpLgotLy8gU28gd2UgbGltaXQgb3VyIG91
dHN0YW5kaW5nIHNwZWN1bGF0aW9ucyBhcmJpdHJhcmlseSB0byAxMC4KLS8vIE91ciBtYXhpbWFs
IG1lbW9yeSBzcGVudCBzcGVjdWxhdGluZyB3aWxsIGJlIGFwcHJveGltYXRlbHk6Ci0vLyBvdXRz
dGFuZGluZ0NoZWNrcG9pbnRMaW1pdCAqIHBlbmRpbmdUb2tlbkxpbWl0ICogc2l6ZW9mKENvbXBh
Y3RUb2tlbikKLS8vIFdlIHVzZSBhIHNlcGFyYXRlIGxvdyBhbmQgaGlnaCB3YXRlciBtYXJrIHRv
IGF2b2lkIGNvbnN0YW50bHkgdG9wcGluZwotLy8gb2ZmIHRoZSBtYWluIHRocmVhZCdzIHRva2Vu
IGJ1ZmZlci4KLS8vIEF0IHRpbWUgb2Ygd3JpdGluZywgdGhpcyBpcyAxMCAqIDEwMDAgKiAyOCBi
eXRlcyA9IGFwcG94IDI4MGtiIG9mIG1lbW9yeS4KLS8vIFRoZXNlIG51bWJlcnMgaGF2ZSBub3Qg
YmVlbiB0dW5lZC4KLXN0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50TGlt
aXQgPSAxMDsKLQotLy8gV2UgbGltaXQgb3VyIGNodWNrcyB0byAxMDAwIHRva2VucywgdG8gbWFr
ZSBzdXJlIHRoZSBtYWluCi0vLyB0aHJlYWQgaXMgbmV2ZXIgd2FpdGluZyBvbiB0aGUgcGFyc2Vy
IHRocmVhZCBmb3IgdG9rZW5zLgotLy8gVGhpcyB3YXMgdHVuZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQwOC4KLXN0YXRpYyBjb25zdCBzaXplX3QgcGVu
ZGluZ1Rva2VuTGltaXQgPSAxMDAwOwotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi0j
aWZuZGVmIE5ERUJVRwotCi1zdGF0aWMgdm9pZCBjaGVja1RoYXRUb2tlbnNBcmVTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKGNvbnN0IENvbXBhY3RIVE1MVG9rZW5TdHJlYW0qIHRva2VucykKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy0+c2l6ZSgpOyArK2kpCi0gICAgICAg
IEFTU0VSVCh0b2tlbnMtPmF0KGkpLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsKLX0K
LQotc3RhdGljIHZvaWQgY2hlY2tUaGF0UHJlbG9hZHNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkKGNvbnN0IFByZWxvYWRSZXF1ZXN0U3RyZWFtJiBwcmVsb2FkcykKLXsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByZWxvYWRzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NFUlQocHJl
bG9hZHNbaV0tPmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsKLX0KLQotI2VuZGlmCi0K
LUJhY2tncm91bmRIVE1MUGFyc2VyOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdl
YWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+PiByZWZlcmVuY2UsIE93blB0cjxDb25m
aWd1cmF0aW9uPiBjb25maWcpCi0gICAgOiBtX3dlYWtGYWN0b3J5KHJlZmVyZW5jZSwgdGhpcykK
LSAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCi0gICAgLCBtX3Rva2VuaXpl
cihIVE1MVG9rZW5pemVyOjpjcmVhdGUoY29uZmlnLT5vcHRpb25zKSkKLSAgICAsIG1fdHJlZUJ1
aWxkZXJTaW11bGF0b3IoY29uZmlnLT5vcHRpb25zKQotICAgICwgbV9vcHRpb25zKGNvbmZpZy0+
b3B0aW9ucykKLSAgICAsIG1fcGFyc2VyKGNvbmZpZy0+cGFyc2VyKQotICAgICwgbV9wZW5kaW5n
VG9rZW5zKGFkb3B0UHRyKG5ldyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKSkKLSAgICAsIG1feHNz
QXVkaXRvcihjb25maWctPnhzc0F1ZGl0b3IucmVsZWFzZSgpKQotICAgICwgbV9wcmVsb2FkU2Nh
bm5lcihjb25maWctPnByZWxvYWRTY2FubmVyLnJlbGVhc2UoKSkKLXsKLX0KLQotdm9pZCBCYWNr
Z3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaW5wdXQpCi17Ci0gICAgQVNT
RVJUKCFtX2lucHV0LmN1cnJlbnQoKS5pc0Nsb3NlZCgpKTsKLSAgICBtX2lucHV0LmFwcGVuZChp
bnB1dCk7Ci0gICAgcHVtcFRva2VuaXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFy
c2VyOjpyZXN1bWVGcm9tKE93blB0cjxDaGVja3BvaW50PiBjaGVja3BvaW50KQotewotICAgIG1f
cGFyc2VyID0gY2hlY2twb2ludC0+cGFyc2VyOwotICAgIG1fdG9rZW4gPSBjaGVja3BvaW50LT50
b2tlbi5yZWxlYXNlKCk7Ci0gICAgbV90b2tlbml6ZXIgPSBjaGVja3BvaW50LT50b2tlbml6ZXIu
cmVsZWFzZSgpOwotICAgIG1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2V0U3RhdGUoY2hlY2twb2lu
dC0+dHJlZUJ1aWxkZXJTdGF0ZSk7Ci0gICAgbV9pbnB1dC5yZXdpbmRUbyhjaGVja3BvaW50LT5p
bnB1dENoZWNrcG9pbnQsIGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQpOwotICAgIG1fcHJlbG9h
ZFNjYW5uZXItPnJld2luZFRvKGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCk7
Ci0gICAgcHVtcFRva2VuaXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpz
dGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2tw
b2ludCkKLXsKLSAgICAvLyBOb3RlLCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQg
dGhlIGluZGV4IGJlaW5nIGludmFsaWQKLSAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWlu
IHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBGSUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52
YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKGlucHV0Q2hlY2twb2ludCk7Ci0gICAgcHVtcFRva2Vu
aXplcigpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQotewotICAg
IG1hcmtFbmRPZkZpbGUoKTsKLSAgICBwdW1wVG9rZW5pemVyKCk7Ci19Ci0KLXZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OnN0b3AoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12b2lkIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpmb3JjZVBsYWludGV4dEZvclRleHREb2N1bWVudCgpCi17Ci0g
ICAgLy8gVGhpcyBpcyBvbmx5IHVzZWQgYnkgdGhlIFRleHREb2N1bWVudFBhcnNlciAoYSBzdWJj
bGFzcyBvZiBIVE1MRG9jdW1lbnRQYXJzZXIpCi0gICAgLy8gdG8gZm9yY2UgdXMgaW50byB0aGUg
UExBSU5URVhUIHN0YXRlIHcvbyB1c2luZyBhIDxwbGFpbnRleHQ+IHRhZy4KLSAgICAvLyBUaGUg
VGV4dERvY3VtZW50UGFyc2VyIHVzZXMgYSA8cHJlPiB0YWcgZm9yIGhpc3RvcmljYWwvY29tcGF0
aWJpbGl0eSByZWFzb25zLgotICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVy
OjpQTEFJTlRFWFRTdGF0ZSk7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtF
bmRPZkZpbGUoKQotewotICAgIEFTU0VSVCghbV9pbnB1dC5jdXJyZW50KCkuaXNDbG9zZWQoKSk7
Ci0gICAgbV9pbnB1dC5hcHBlbmQoU3RyaW5nKCZrRW5kT2ZGaWxlTWFya2VyLCAxKSk7Ci0gICAg
bV9pbnB1dC5jbG9zZSgpOwotfQotCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKCkKLXsKLSAgICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1bGF0aW5nIHVudGlsIHRo
ZSBtYWluIHRocmVhZCBoYXMgYWxtb3N0IGNhdWdodCB1cC4KLSAgICBpZiAobV9pbnB1dC5vdXRz
dGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50TGltaXQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIG1fc291cmNlVHJh
Y2tlci5zdGFydChtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rva2Vu
KTsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgp
LCAqbV90b2tlbi5nZXQoKSkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVu
ZCBvZiBvdXIgY3VycmVudCBpbnB1dC4KLSAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1fc291cmNlVHJh
Y2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7
Ci0KLSAgICAgICAgewotICAgICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gVGV4dFBv
c2l0aW9uKG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVudCgp
LmN1cnJlbnRDb2x1bW4oKSk7Ci0KLSAgICAgICAgICAgIGlmIChPd25QdHI8WFNTSW5mbz4geHNz
SW5mbyA9IG1feHNzQXVkaXRvci0+ZmlsdGVyVG9rZW4oRmlsdGVyVG9rZW5SZXF1ZXN0KCptX3Rv
a2VuLCBtX3NvdXJjZVRyYWNrZXIsIG1fdG9rZW5pemVyLT5zaG91bGRBbGxvd0NEQVRBKCkpKSkg
ewotICAgICAgICAgICAgICAgIHhzc0luZm8tPm1fdGV4dFBvc2l0aW9uID0gcG9zaXRpb247Ci0g
ICAgICAgICAgICAgICAgbV9wZW5kaW5nWFNTSW5mb3MuYXBwZW5kKHhzc0luZm8ucmVsZWFzZSgp
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ29tcGFjdEhUTUxUb2tlbiB0b2tlbiht
X3Rva2VuLmdldCgpLCBUZXh0UG9zaXRpb24obV9pbnB1dC5jdXJyZW50KCkuY3VycmVudExpbmUo
KSwgbV9pbnB1dC5jdXJyZW50KCkuY3VycmVudENvbHVtbigpKSk7Ci0KLSAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXItPnNjYW4odG9rZW4sIG1fcGVuZGluZ1ByZWxvYWRzKTsKLQotICAgICAg
ICAgICAgbV9wZW5kaW5nVG9rZW5zLT5hcHBlbmQodG9rZW4pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbV90b2tlbi0+Y2xlYXIoKTsKLQotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11bGF0
b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgpKSB8
fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewotICAgICAg
ICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwotICAgICAgICAgICAgLy8gSWYgd2UncmUg
ZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRocmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2b2lkIGNv
bnN1bWluZyB0b28gbXVjaCBtZW1vcnkuCi0gICAgICAgICAgICBpZiAobV9pbnB1dC5vdXRzdGFu
ZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50TGltaXQpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnNlbmRUb2tlbnNUb01haW5UaHJlYWQoKQotewotICAgIGlmIChtX3BlbmRp
bmdUb2tlbnMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWZuZGVmIE5ERUJVRwot
ICAgIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQobV9wZW5kaW5n
VG9rZW5zLmdldCgpKTsKLSAgICBjaGVja1RoYXRQcmVsb2Fkc0FyZVNhZmVUb1NlbmRUb0Fub3Ro
ZXJUaHJlYWQobV9wZW5kaW5nUHJlbG9hZHMpOwotI2VuZGlmCi0KLSAgICBPd25QdHI8SFRNTERv
Y3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuaz4gY2h1bmsgPSBhZG9wdFB0cihuZXcgSFRNTERvY3Vt
ZW50UGFyc2VyOjpQYXJzZWRDaHVuayk7Ci0gICAgY2h1bmstPnRva2VucyA9IG1fcGVuZGluZ1Rv
a2Vucy5yZWxlYXNlKCk7Ci0gICAgY2h1bmstPnByZWxvYWRzLnN3YXAobV9wZW5kaW5nUHJlbG9h
ZHMpOwotICAgIGNodW5rLT54c3NJbmZvcy5zd2FwKG1fcGVuZGluZ1hTU0luZm9zKTsKLSAgICBj
aHVuay0+dG9rZW5pemVyU3RhdGUgPSBtX3Rva2VuaXplci0+c3RhdGUoKTsKLSAgICBjaHVuay0+
dHJlZUJ1aWxkZXJTdGF0ZSA9IG1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc3RhdGUoKTsKLSAgICBj
aHVuay0+aW5wdXRDaGVja3BvaW50ID0gbV9pbnB1dC5jcmVhdGVDaGVja3BvaW50KCk7Ci0gICAg
Y2h1bmstPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fcHJlbG9hZFNjYW5uZXItPmNyZWF0
ZUNoZWNrcG9pbnQoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1bWVudFBh
cnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIsIG1fcGFyc2Vy
LCBjaHVuay5yZWxlYXNlKCkpKTsKLQotICAgIG1fcGVuZGluZ1Rva2VucyA9IGFkb3B0UHRyKG5l
dyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMDA5
YWNiYWZmN2YwMTMxY2ZmMzE5YWM4MmZmODNlZjk0NWZlZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQmFj
a2dyb3VuZEhUTUxQYXJzZXJfaAotI2RlZmluZSBCYWNrZ3JvdW5kSFRNTFBhcnNlcl9oCi0KLSNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0KLSNpbmNsdWRlICJCYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtLmgiCi0jaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgotI2luY2x1ZGUg
IkhUTUxQYXJzZXJPcHRpb25zLmgiCi0jaW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCi0j
aW5jbHVkZSAiSFRNTFNvdXJjZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJIVE1MVG9rZW4uaCIKLSNp
bmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCi0jaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyU2ltdWxh
dG9yLmgiCi0jaW5jbHVkZSAiWFNTQXVkaXRvckRlbGVnYXRlLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKLWNsYXNzIFhTU0F1ZGl0b3I7Ci0KLWNs
YXNzIEJhY2tncm91bmRIVE1MUGFyc2VyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7Ci0gICAgICAgIEhUTUxQYXJzZXJP
cHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwYXJz
ZXI7Ci0gICAgICAgIE93blB0cjxYU1NBdWRpdG9yPiB4c3NBdWRpdG9yOwotICAgICAgICBPd25Q
dHI8VG9rZW5QcmVsb2FkU2Nhbm5lcj4gcHJlbG9hZFNjYW5uZXI7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZShQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQ
YXJzZXI+PiByZWZlcmVuY2UsIE93blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCi0gICAgewot
ICAgICAgICBuZXcgQmFja2dyb3VuZEhUTUxQYXJzZXIocmVmZXJlbmNlLCBjb25maWcpOwotICAg
ICAgICAvLyBDYWxsZXIgbXVzdCBmcmVlIGJ5IGNhbGxpbmcgc3RvcCgpLgotICAgIH0KLQotICAg
IHN0cnVjdCBDaGVja3BvaW50IHsKLSAgICAgICAgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+
IHBhcnNlcjsKLSAgICAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW47Ci0gICAgICAgIE93blB0
cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXI7Ci0gICAgICAgIEhUTUxUcmVlQnVpbGRlclNpbXVs
YXRvcjo6U3RhdGUgdHJlZUJ1aWxkZXJTdGF0ZTsKLSAgICAgICAgSFRNTElucHV0Q2hlY2twb2lu
dCBpbnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIFRva2VuUHJlbG9hZFNjYW5uZXJDaGVja3BvaW50
IHByZWxvYWRTY2FubmVyQ2hlY2twb2ludDsKLSAgICAgICAgU3RyaW5nIHVucGFyc2VkSW5wdXQ7
Ci0gICAgfTsKLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVz
dW1lRnJvbShPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgc3RhcnRlZENodW5rV2l0aENo
ZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCk7Ci0gICAgdm9pZCBmaW5pc2goKTsKLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgZm9yY2VQbGFpbnRleHRGb3JUZXh0RG9jdW1lbnQoKTsK
LQotcHJpdmF0ZToKLSAgICBCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdlYWtSZWZl
cmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+PiwgT3duUHRyPENvbmZpZ3VyYXRpb24+KTsKLQot
ICAgIHZvaWQgbWFya0VuZE9mRmlsZSgpOwotICAgIHZvaWQgcHVtcFRva2VuaXplcigpOwotICAg
IHZvaWQgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwotCi0gICAgV2Vha1B0ckZhY3Rvcnk8QmFj
a2dyb3VuZEhUTUxQYXJzZXI+IG1fd2Vha0ZhY3Rvcnk7Ci0gICAgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbSBtX2lucHV0OwotICAgIEhUTUxTb3VyY2VUcmFja2VyIG1fc291cmNlVHJhY2tlcjsK
LSAgICBPd25QdHI8SFRNTFRva2VuPiBtX3Rva2VuOwotICAgIE93blB0cjxIVE1MVG9rZW5pemVy
PiBtX3Rva2VuaXplcjsKLSAgICBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IgbV90cmVlQnVpbGRl
clNpbXVsYXRvcjsKLSAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7Ci0gICAgV2Vha1B0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+IG1fcGFyc2VyOwotCi0gICAgT3duUHRyPENvbXBhY3RIVE1M
VG9rZW5TdHJlYW0+IG1fcGVuZGluZ1Rva2VuczsKLSAgICBQcmVsb2FkUmVxdWVzdFN0cmVhbSBt
X3BlbmRpbmdQcmVsb2FkczsKLSAgICBYU1NJbmZvU3RyZWFtIG1fcGVuZGluZ1hTU0luZm9zOwot
Ci0gICAgT3duUHRyPFhTU0F1ZGl0b3I+IG1feHNzQXVkaXRvcjsKLSAgICBPd25QdHI8VG9rZW5Q
cmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkMWZhMTMyNzAwNTkwZmY4M2U0ZTg4NzA5NTdiNjk3ZGE2YjJjMWFmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBH
T09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQot
Ci0jaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgotCi0jaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgotI2luY2x1ZGUgIlhTU0F1ZGl0b3JEZWxlZ2F0ZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiAgewotICAgIHVuc2ln
bmVkIGJpdGZpZWxkczsKLSAgICBIVE1MSWRlbnRpZmllciBkYXRhOwotICAgIFZlY3RvcjxBdHRy
aWJ1dGU+IHZlY3RvcjsKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uOwotfTsKLQotQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKENvbXBhY3RIVE1MVG9rZW4pID09IHNpemVvZihTYW1lU2l6ZUFz
Q29tcGFjdEhUTUxUb2tlbiksIENvbXBhY3RIVE1MVG9rZW5fc2hvdWxkX3N0YXlfc21hbGwpOwot
Ci1Db21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9r
ZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdGV4dFBvc2l0aW9uKQotICAgIDogbV90eXBlKHRva2Vu
LT50eXBlKCkpCi0gICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCi0gICAgLCBtX2RvY3R5cGVG
b3JjZXNRdWlya3MoZmFsc2UpCi0gICAgLCBtX3RleHRQb3NpdGlvbih0ZXh0UG9zaXRpb24pCi17
Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXpl
ZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSFRNTFRva2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVy
KHRva2VuLT5uYW1lKCksIExpa2VseThCaXQpOwotICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IDEg
RE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCi0g
ICAgICAgIC8vIHNpemUgb2YgQ29tcGFjdEhUTUxUb2tlbiwgd2UganVzdCB1c2UgdGhlIG1fYXR0
cmlidXRlcyB2ZWN0b3IuCi0gICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhU
TUxJZGVudGlmaWVyKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCksIExpa2VseThCaXQpLCBTdHJp
bmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKLSAgICAgICAgbV9kb2N0eXBlRm9yY2Vz
UXVpcmtzID0gdG9rZW4tPmZvcmNlUXVpcmtzKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEhU
TUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChWZWN0b3I8
SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5hdHRyaWJ1
dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKLSAg
ICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKGl0
LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQt
PnZhbHVlKSkpOwotICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW46
OkVuZFRhZzoKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwot
ICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewotICAgICAgICBtX2lzQWxsOEJpdERhdGEg
PSB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpOwotICAgICAgICBtX2RhdGEgPSBIVE1MSWRlbnRpZmll
cih0b2tlbi0+ZGF0YSgpLCB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpID8gRm9yY2U4Qml0IDogRm9y
Y2UxNkJpdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1jb25zdCBD
b21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGUqIENvbXBhY3RIVE1MVG9rZW46OmdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKLXsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICh0
aHJlYWRTYWZlTWF0Y2gobV9hdHRyaWJ1dGVzLmF0KGkpLm5hbWUsIG5hbWUpKQotICAgICAgICAg
ICAgcmV0dXJuICZtX2F0dHJpYnV0ZXMuYXQoaSk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQot
Ci1ib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNv
bnN0Ci17Ci0gICAgZm9yIChWZWN0b3I8QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2F0dHJpYnV0ZXMuYmVnaW4oKTsgaXQgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0KSB7Ci0g
ICAgICAgIGlmICghaXQtPm5hbWUuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXQtPnZhbHVlLmlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gbV9kYXRhLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOwotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZmYTRhZTQzY2QxZjNlYmYwZTNlYmMzZTg5ZWE0OTRmNjJmNTMzMDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBDb21wYWN0SFRNTFRva2VuX2gKLSNkZWZpbmUgQ29tcGFjdEhUTUxUb2tlbl9oCi0KLSNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0KLSNpbmNsdWRlICJIVE1MSWRlbnRpZmll
ci5oIgotI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBRdWFsaWZpZWROYW1lOwotCi1jbGFz
cyBDb21wYWN0SFRNTFRva2VuIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAg
ICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQotICAgICAgICAgICAgOiBuYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHZhbHVlKHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBIVE1MSWRlbnRpZmllciBuYW1l
OwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgfTsKLQotICAgIENvbXBhY3RIVE1MVG9rZW4o
Y29uc3QgSFRNTFRva2VuKiwgY29uc3QgVGV4dFBvc2l0aW9uJik7Ci0KLSAgICBib29sIGlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi0gICAgSFRNTFRva2VuOjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVG9rZW46OlR5cGU+KG1fdHlwZSk7
IH0KLSAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX3NlbGZDbG9zaW5n
OyB9Ci0gICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbDhCaXRE
YXRhOyB9Ci0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KLSAgICBjb25zdCBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IFRleHRQb3NpdGlv
biYgdGV4dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb247IH0KLQotICAg
IC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZv
aWQgaW5jcmVhc2luZyB0aGUKLSAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1
c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMgdmVjdG9yLgotICAgIGNvbnN0IEhUTUxJZGVudGlmaWVy
JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KLSAgICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBj
b25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0KLQotcHJpdmF0ZToKLSAgICB1
bnNpZ25lZCBtX3R5cGUgOiA0OwotICAgIHVuc2lnbmVkIG1fc2VsZkNsb3NpbmcgOiAxOwotICAg
IHVuc2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7Ci0gICAgdW5zaWduZWQgbV9kb2N0eXBlRm9y
Y2VzUXVpcmtzOiAxOwotCi0gICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFtZSIsICJj
aGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKLSAgICBWZWN0b3I8QXR0
cmlidXRlPiBtX2F0dHJpYnV0ZXM7Ci0gICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOwot
fTsKLQotdHlwZWRlZiBWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4gQ29tcGFjdEhUTUxUb2tlblN0
cmVhbTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IDJkN2I0MTQ4OWNlMjk0MTRiNzFkYmRjMzc3YzlhNWVkMTIxOWVjOTkuLjg3
N2FmODgzZDc1NTdlZDU5ZDNhYTFiNWMyYTEzNGQxZmQ3N2I5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5o
IgogCi0jaW5jbHVkZSAiQmFja2dyb3VuZEhUTUxQYXJzZXIuaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmgKaW5kZXggMDM4Y2ZhYzg0ZTcwNDQ1Y2UwNGQ3Njk1MDliYTU2MGQw
YjY3Y2E4YS4uYTY1ZTBjODU0ZTEzNDI1YjI4NDRjZTNmNjQ4YmYzNjc3OWRjMDhlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTI2
LDkgKzI2LDcgQEAKICNpZm5kZWYgSFRNTERvY3VtZW50UGFyc2VyX2gKICNkZWZpbmUgSFRNTERv
Y3VtZW50UGFyc2VyX2gKIAotI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgotI2luY2x1ZGUgIkNvbXBhY3RIVE1M
VG9rZW4uaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9ucy5oIgpA
QCAtMzcsNyArMzUsNiBAQAogI2luY2x1ZGUgIkhUTUxTb3VyY2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgotI2luY2x1ZGUgIkhU
TUxUcmVlQnVpbGRlclNpbXVsYXRvci5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0
b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUyMWJjYzI4MDdjNjE3MTcwZGRhYzNjMmNh
ZDhjZGY2MmIyYmRjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVEhS
RUFERURfSFRNTF9QQVJTRVIpCi0KLSNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgotCi0jaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi10eXBlZGVm
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKLXR5cGVk
ZWYgSGFzaE1hcDx1bnNpZ25lZCwgSWRlbnRpZmllckVudHJ5LCBBbHJlYWR5SGFzaGVkPiBJZGVu
dGlmaWVyVGFibGU7Ci0KLXVuc2lnbmVkIEhUTUxJZGVudGlmaWVyOjptYXhOYW1lTGVuZ3RoID0g
MDsKLQotc3RhdGljIElkZW50aWZpZXJUYWJsZSYgaWRlbnRpZmllclRhYmxlKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKElkZW50aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkgfHwgIXRhYmxlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIHRhYmxl
OwotfQotCi0jaWZuZGVmIE5ERUJVRwotYm9vbCBIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgoY29u
c3QgU3RyaW5nSW1wbCogc3RyaW5nKQotewotICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFi
bGUgPSBpZGVudGlmaWVyVGFibGUoKTsKLSAgICByZXR1cm4gdGFibGUuY29udGFpbnMoc3RyaW5n
LT5oYXNoKCkpOwotfQotI2VuZGlmCi0KLXVuc2lnbmVkIEhUTUxJZGVudGlmaWVyOjpmaW5kSW5k
ZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIHRyeSBoYXNoaW5nIGlmIHdlIGtub3cgdGhlIHN0cmluZyBpcyB0b28g
bG9uZy4KLSAgICBpZiAobGVuZ3RoID4gbWF4TmFtZUxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGlu
dmFsaWRJbmRleDsKLSAgICAvLyBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyBpcyB0aGUgZnVu
Y3Rpb24gU3RyaW5nSW1wbDo6aGFzaCgpIHVzZXMuCi0gICAgdW5zaWduZWQgaGFzaCA9IFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycywgbGVuZ3RoKTsK
LSAgICBjb25zdCBJZGVudGlmaWVyVGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7Ci0g
ICAgQVNTRVJUKCF0YWJsZS5pc0VtcHR5KCkpOwotCi0gICAgSWRlbnRpZmllclRhYmxlOjpjb25z
dF9pdGVyYXRvciBpdCA9IHRhYmxlLmZpbmQoaGFzaCk7Ci0gICAgaWYgKGl0ID09IHRhYmxlLmVu
ZCgpKQotICAgICAgICByZXR1cm4gaW52YWxpZEluZGV4OwotICAgIC8vIEl0J3MgcG9zc2libGUg
dG8gaGF2ZSBoYXNoIGNvbGxpc2lvbnMgYmV0d2VlbiBhcmJpdHJhcnkgc3RyaW5ncyBhbmQKLSAg
ICAvLyBrbm93biBpZGVudGlmaWVycyAoZS5nLiAiYnZ2ZmciIGNvbGxpZGVzIHdpdGggInNjcmlw
dCIpLgotICAgIC8vIEhvd2V2ZXIgQVNTRVJUcyBpbiBhZGROYW1lcygpIGd1YXJkIGFnYWluc3Qg
dGhlcmUgZXZlciBiZWluZyBjb2xsaXNpb25zCi0gICAgLy8gYmV0d2VlbiBrbm93biBpZGVudGlm
aWVycy4KLSAgICBpZiAoIWVxdWFsKGl0LT52YWx1ZS5zZWNvbmQsIGNoYXJhY3RlcnMsIGxlbmd0
aCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkSW5kZXg7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZS5m
aXJzdDsKLX0KLQotY29uc3QgdW5zaWduZWQga0hUTUxOYW1lc0luZGV4T2Zmc2V0ID0gMDsKLWNv
bnN0IHVuc2lnbmVkIGtIVE1MQXR0cnNJbmRleE9mZnNldCA9IDEwMDA7Ci1DT01QSUxFX0FTU0VS
VChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhP
ZmZzZXRfc2hvdWxkX2JlX2xhcmdlcl90aGFuX0hUTUxUYWdzQ291bnQpOwotCi1zdGF0aWMgY29u
c3QgU3RyaW5nJiBuYW1lRm9ySW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgdW5zaWduZWQg
YWRqdXN0ZWRJbmRleDsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCAqIG5hbWVzOwot
ICAgIGlmIChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9mZnNldCkgewotICAgICAgICBBU1NFUlQo
aW5kZXggPCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgKyBIVE1MVGFnc0NvdW50KTsKLSAgICAgICAg
YWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxOYW1lc0luZGV4T2Zmc2V0OwotICAgICAgICBu
YW1lcyA9IGdldEhUTUxUYWdzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0ICsgSFRNTEF0dHJzQ291bnQpOwotICAgICAgICBhZGp1
c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTEF0dHJzSW5kZXhPZmZzZXQ7Ci0gICAgICAgIG5hbWVz
ID0gZ2V0SFRNTEF0dHJzKCk7Ci0gICAgfQotICAgIC8vIEhUTUxBdHRycyBhbmQgSFRNTE5hbWVz
IG1heSBoYXZlIGNvbGxpc2lvbnMsIGJ1dAotICAgIC8vIHdlIHNob3VsZG4ndCBjYXJlIHdoaWNo
IHdlIGVuZGVkIHVwIHN0b3JpbmcsIHNpbmNlIHRoZWlyCi0gICAgLy8gY29tcG9uZW50cyBhcmUg
YWxsIEF0b21pY1N0cmluZ3MgYW5kIHNob3VsZCB1c2UgdGhlIHNhbWUKLSAgICAvLyB1bmRlcmx5
aW5nIFN0cmluZ0ltcGwqLgotICAgIHJldHVybiBuYW1lc1thZGp1c3RlZEluZGV4XS0+bG9jYWxO
YW1lKCkuc3RyaW5nKCk7Ci19Ci0KLWNvbnN0IFN0cmluZyYgSFRNTElkZW50aWZpZXI6OmFzU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChtX2lu
ZGV4ICE9IGludmFsaWRJbmRleCkKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JJbmRleChtX2luZGV4
KTsKLSAgICByZXR1cm4gbV9zdHJpbmc7Ci19Ci0KLWNvbnN0IFN0cmluZ0ltcGwqIEhUTUxJZGVu
dGlmaWVyOjphc1N0cmluZ0ltcGwoKSBjb25zdAotewotICAgIGlmIChtX2luZGV4ICE9IGludmFs
aWRJbmRleCkKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JJbmRleChtX2luZGV4KS5pbXBsKCk7Ci0g
ICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKLX0KLQotdm9pZCBIVE1MSWRlbnRpZmllcjo6YWRk
TmFtZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKiBuYW1lcywgdW5zaWduZWQgbmFtZXND
b3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpCi17Ci0gICAgSWRlbnRpZmllclRhYmxlJiB0YWJs
ZSA9IGlkZW50aWZpZXJUYWJsZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1l
c0NvdW50OyArK2kpIHsKLSAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IG5hbWVzW2ldLT5sb2Nh
bE5hbWUoKS5pbXBsKCk7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBuYW1lLT5oYXNoKCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gaSArIGluZGV4T2Zmc2V0OwotICAgICAgICBJZGVudGlm
aWVyRW50cnkgZW50cnkoaW5kZXgsIG5hbWUpOwotICAgICAgICBJZGVudGlmaWVyVGFibGU6OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSB0YWJsZS5hZGQoaGFzaCwgZW50cnkpOwotICAgICAgICBtYXhO
YW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbmFtZS0+bGVuZ3RoKCkpOwotICAg
ICAgICAvLyBFbnN1cmUgd2UncmUgdXNpbmcgdGhlIHNhbWUgaGFzaGluZyBhbGdvcml0aG0gdG8g
Z2V0IGFuZCBzZXQuCi0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCAhYWRkUmVzdWx0
LmlzTmV3RW50cnkgfHwgSFRNTElkZW50aWZpZXI6OmZpbmRJbmRleChuYW1lLT5jaGFyYWN0ZXJz
KCksIG5hbWUtPmxlbmd0aCgpKSA9PSBpbmRleCk7Ci0gICAgICAgIC8vIFdlIGV4cGVjdCBzb21l
IGhhc2ggY29sbGlzaW9ucywgYnV0IG9ubHkgZm9yIGlkZW50aWNhbCBzdHJpbmdzLgotICAgICAg
ICAvLyBTaW5jZSBhbGwgb2YgdGhlc2UgbmFtZXMgYXJlIEF0b21pY1N0cmluZ3MgcG9pbnRlcnMg
c2hvdWxkIGJlIGVxdWFsLgotICAgICAgICAvLyBOb3RlOiBJZiB5b3UgaGl0IHRoaXMgQVNTRVJU
LCB0aGVuIHdlIGhhZCBhIGhhc2ggY29sbGlzaW9uIGFtb25nCi0gICAgICAgIC8vIEhUTUxOYW1l
cyBzdHJpbmdzLCBhbmQgd2UgbmVlZCB0byByZS1kZXNpZ24gaG93IHdlIHVzZSB0aGlzIGhhc2gh
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkg
fHwgbmFtZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNlY29uZCk7Ci0gICAgfQotfQot
Ci12b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOyAvLyBOb3QgdGVjaG5pY2FsbHkgbmVjZXNzYXJ5LCBidXQgdGhpcyBpcyBvdXIgY3VycmVu
dCBleHBlY3RlZCB1c2FnZS4KLSAgICBzdGF0aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7
Ci0gICAgaWYgKGlzSW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpc0luaXRpYWxp
emVkID0gdHJ1ZTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXRvbWl6ZSBzbWFsbCB3aGl0
ZXNwYWNlIChcbiwgXG5cbiwgZXRjLikKLSAgICBhZGROYW1lcyhnZXRIVE1MVGFncygpLCBIVE1M
VGFnc0NvdW50LCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQpOwotICAgIGFkZE5hbWVzKGdldEhUTUxB
dHRycygpLCBIVE1MQXR0cnNDb3VudCwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KTsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcyMWY3NDc0YmY1NDZmMzQ3M2UzMjUyMzQ0OThjZDFlMjk3OTYwNmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTElkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBI
VE1MSWRlbnRpZmllcl9oCi0jZGVmaW5lIEhUTUxJZGVudGlmaWVyX2gKLQotI2lmIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFF1YWxpZmllZE5hbWU7Ci0KLWVudW0gQ2hh
cmFjdGVyV2lkdGggewotICAgIExpa2VseThCaXQsCi0gICAgRm9yY2U4Qml0LAotICAgIEZvcmNl
MTZCaXQKLX07Ci0KLWNsYXNzIEhUTUxJZGVudGlmaWVyIHsKLXB1YmxpYzoKLSAgICBIVE1MSWRl
bnRpZmllcigpIDogbV9pbmRleCgwKSB7IH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KLSAgICBIVE1MSWRlbnRpZmllcihjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5PiYgdmVjdG9yLCBDaGFyYWN0ZXJXaWR0aCB3aWR0aCkKLSAgICAgICAgOiBtX2luZGV4
KGZpbmRJbmRleCh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkKLSAgICB7Ci0gICAgICAg
IGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKHdpZHRoID09IExpa2VseThCaXQpCi0gICAgICAgICAgICBtX3N0cmluZyA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvcik7Ci0gICAgICAgIGVsc2UgaWYgKHdp
ZHRoID09IEZvcmNlOEJpdCkKLSAgICAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nOjptYWtlOEJp
dEZyb20xNkJpdFNvdXJjZSh2ZWN0b3IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0
cmluZyA9IFN0cmluZyh2ZWN0b3IpOwotICAgIH0KLQotICAgIC8vIGFzU3RyaW5nIHNob3VsZCBv
bmx5IGJlIHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIGNvbnN0IFN0cmluZyYgYXNTdHJp
bmcoKSBjb25zdDsKLSAgICAvLyBhc1N0cmluZ0ltcGwoKSBpcyBzYWZlIHRvIGNhbGwgZnJvbSBh
bnkgdGhyZWFkLgotICAgIGNvbnN0IFN0cmluZ0ltcGwqIGFzU3RyaW5nSW1wbCgpIGNvbnN0Owot
Ci0gICAgc3RhdGljIHZvaWQgaW5pdCgpOwotCi0gICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3Ro
ZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKTsgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgIHN0YXRpYyBib29sIGhhc0luZGV4KGNv
bnN0IFN0cmluZ0ltcGwqKTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBpbnZhbGlkSW5kZXggPSAtMTsKLSAgICBzdGF0aWMgdW5zaWduZWQgbWF4TmFtZUxl
bmd0aDsKLSAgICBzdGF0aWMgdW5zaWduZWQgZmluZEluZGV4KGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyB2b2lkIGFkZE5hbWVzKFF1YWxpZmll
ZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQp
OwotCi0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgYSB1bmlvbi4KLSAgICB1bnNpZ25lZCBt
X2luZGV4OwotICAgIFN0cmluZyBtX3N0cmluZzsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggOGQ5ZTQzZjljYWEyNDhmMmFmZjQ5YmJl
NDY3NTdkMGFhMTg0ZjNkOC4uZmIyMDgyOWI3ZjRjMjRkM2JiNDFiNmY0Y2I3M2RkYzYwYzgzMGMy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApA
QCAtMjUsNyArMjUsNiBAQAogI2lmbmRlZiBIVE1MUGFyc2VySWRpb21zX2gKICNkZWZpbmUgSFRN
TFBhcnNlcklkaW9tc19oCiAKLSNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuaAppbmRleCA0ZmFmN2ZhZmM0Mzg3ZTc2M2QzMTAwZmI5MGQ5MWViZWRm
MWMwNzBhLi5hY2U5NDQ3YWU2ZDY1NDAyYTM5YmY4YWQ5Y2I2MGRlYjk5Njc2MWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaApAQCAtMjgs
NyArMjgsNiBAQAogI2RlZmluZSBIVE1MUHJlbG9hZFNjYW5uZXJfaAogCiAjaW5jbHVkZSAiQ1NT
UHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCiAjaW5jbHVk
ZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlclNpbXVsYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDIyNTk2NGZlN2RiNGIyZjkxNGNiZTgzOTlkNmRjNGM0N2UyZWY3YjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
LQotI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5oIgotCi0jaW5jbHVkZSAiSFRN
TERvY3VtZW50UGFyc2VyLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1
ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7Ci0KLXN0YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVu
dChjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRl
bnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaC4KLSAgICBjb25z
dCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICByZXR1cm4gdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiaWdUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3RlVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYm9keVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgY2VudGVyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgY29kZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGRkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgZGl2VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgZGxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBkdFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGVtVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
ZW1iZWRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBo
MVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgyVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDNUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNFRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg1VGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDZUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoZWFkVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaHJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgbGlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBsaXN0aW5nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgbWVudVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIG1ldGFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBub2JyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgb2xUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBwVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
cHJlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcnVi
eVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzbWFsbFRhZykK
LSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNwYW5UYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHJvbmdUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHJpa2VUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdWJUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdXBUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0YWJsZVRhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHR0VGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdVRhZykKLSAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdmFyVGFnKQotICAgICAgICB8fCAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGZvbnRUYWcpICYmICh0b2tlbi5nZXRBdHRyaWJ1dGVJdGVt
KGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShmYWNlQXR0cikgfHwgdG9rZW4u
Z2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikpKTsKLX0KLQotc3RhdGljIGJvb2wgdG9rZW5FeGl0
c1NWRyhjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBGSVhNRTogSXQn
cyB2ZXJ5IGZyYWdpbGUgdGhhdCB3ZSBzcGVjaWFsIGNhc2UgZm9yZWlnbk9iamVjdCBoZXJlIHRv
IGJlIGNhc2UtaW5zZW5zaXRpdmUuCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlTm9uTnVs
bCh0b2tlbi5kYXRhKCkuYXNTdHJpbmdJbXBsKCksIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7Ci19Ci0KLXN0YXRpYyBib29sIHRva2VuRXhpdHNNYXRoKGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNv
cGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQg
YW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBIVE1MSWRlbnRp
ZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptb1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptblRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptc1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptdGV4dFRhZyk7Ci19Ci0KLUhUTUxUcmVlQnVpbGRlclNp
bXVsYXRvcjo6SFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25z
JiBvcHRpb25zKQotICAgIDogbV9vcHRpb25zKG9wdGlvbnMpCi17Ci0gICAgbV9uYW1lc3BhY2VT
dGFjay5hcHBlbmQoSFRNTCk7Ci19Ci0KLUhUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6U3RhdGUg
SFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihIVE1MVHJlZUJ1aWxkZXIqIHRyZWVC
dWlsZGVyKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgU3RhdGUgbmFtZXNw
YWNlU3RhY2s7Ci0gICAgZm9yIChIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiByZWNv
cmQgPSB0cmVlQnVpbGRlci0+b3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgpOyByZWNvcmQ7IHJl
Y29yZCA9IHJlY29yZC0+bmV4dCgpKSB7Ci0gICAgICAgIE5hbWVzcGFjZSBjdXJyZW50TmFtZXNw
YWNlID0gSFRNTDsKLSAgICAgICAgaWYgKHJlY29yZC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgICAgIGN1cnJlbnROYW1lc3BhY2UgPSBTVkc7
Ci0gICAgICAgIGVsc2UgaWYgKHJlY29yZC0+bmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6
Om1hdGhtbE5hbWVzcGFjZVVSSSkKLSAgICAgICAgICAgIGN1cnJlbnROYW1lc3BhY2UgPSBNYXRo
TUw7Ci0KLSAgICAgICAgaWYgKG5hbWVzcGFjZVN0YWNrLmlzRW1wdHkoKSB8fCBuYW1lc3BhY2VT
dGFjay5sYXN0KCkgIT0gY3VycmVudE5hbWVzcGFjZSkKLSAgICAgICAgICAgIG5hbWVzcGFjZVN0
YWNrLmFwcGVuZChjdXJyZW50TmFtZXNwYWNlKTsKLSAgICB9Ci0gICAgbmFtZXNwYWNlU3RhY2su
cmV2ZXJzZSgpOwotICAgIHJldHVybiBuYW1lc3BhY2VTdGFjazsKLX0KLQotYm9vbCBIVE1MVHJl
ZUJ1aWxkZXJTaW11bGF0b3I6OnNpbXVsYXRlKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2Vu
LCBIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIpCi17Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdO
YW1lID0gdG9rZW4uZGF0YSgpOwotICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IFNWR05hbWVzOjpzdmdUYWcpKQotICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQo
U1ZHKTsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6
bWF0aFRhZykpCi0gICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVuZChNYXRoTUwpOwot
ICAgICAgICBpZiAoaW5Gb3JlaWduQ29udGVudCgpICYmIHRva2VuRXhpdHNGb3JlaWduQ29udGVu
dCh0b2tlbikpCi0gICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAg
ICAgICAgaWYgKChtX25hbWVzcGFjZVN0YWNrLmxhc3QoKSA9PSBTVkcgJiYgdG9rZW5FeGl0c1NW
Ryh0b2tlbikpCi0gICAgICAgICAgICB8fCAobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0
aE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCi0gICAgICAgICAgICBtX25hbWVzcGFjZVN0
YWNrLmFwcGVuZChIVE1MKTsKLSAgICAgICAgaWYgKCFpbkZvcmVpZ25Db250ZW50KCkpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBjb3B5IG9mIFRva2VuaXplcjo6dXBk
YXRlU3RhdGVGb3Igd2hpY2ggdXNlcyB0aHJlYWRTYWZlTWF0Y2hlcy4KLSAgICAgICAgICAgIGlm
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCi0gICAgICAgICAgICAgICAg
dG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcGxhaW50ZXh0
VGFnKSkKLSAgICAgICAgICAgICAgICB0b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQotICAgICAgICAgICAgICAgIHRva2VuaXplci0+
c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKLSAgICAg
ICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFn
KQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB4
bXBUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBub2VtYmVkVGFnKSAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCi0gICAgICAgICAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQot
ICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9z
Y3JpcHRUYWcpICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSkKLSAgICAgICAgICAgICAgICB0
b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKSB7
Ci0gICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwot
ICAgICAgICBpZiAoKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IFNWRyAmJiB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCi0gICAgICAgICAgICB8fCAobV9uYW1l
c3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0aE1MICYmIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBN
YXRoTUxOYW1lczo6bWF0aFRhZykpCi0gICAgICAgICAgICB8fCAobV9uYW1lc3BhY2VTdGFjay5j
b250YWlucyhTVkcpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwgJiYgdG9rZW5F
eGl0c1NWRyh0b2tlbikpCi0gICAgICAgICAgICB8fCAobV9uYW1lc3BhY2VTdGFjay5jb250YWlu
cyhNYXRoTUwpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwgJiYgdG9rZW5FeGl0
c01hdGgodG9rZW4pKSkKLSAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2sucmVtb3ZlTGFzdCgp
OwotICAgICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRh
ZykpIHsKLSAgICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQotICAgICAgICAgICAg
ICAgIHRva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBB
bHNvIHNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50IHdoZW4gaW4gdGV4dCBtb2RlLgot
ICAgIHRva2VuaXplci0+c2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoaW5Gb3JlaWdu
Q29udGVudCgpKTsKLSAgICB0b2tlbml6ZXItPnNldFNob3VsZEFsbG93Q0RBVEEoaW5Gb3JlaWdu
Q29udGVudCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDU4Y2VjYzQ4YTUyYWZkZDdkNzg5NjI0OTNkZGU1NDRkZjk0MmE1MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3JfaAotI2RlZmluZSBIVE1MVHJlZUJ1
aWxkZXJTaW11bGF0b3JfaAotCi0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotCi0j
aW5jbHVkZSAiSFRNTFBhcnNlck9wdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvbXBhY3RIVE1MVG9rZW47Ci1jbGFz
cyBIVE1MVG9rZW5pemVyOwotY2xhc3MgSFRNTFRyZWVCdWlsZGVyOwotCi1jbGFzcyBIVE1MVHJl
ZUJ1aWxkZXJTaW11bGF0b3IgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHJpdmF0
ZToKLSAgICBlbnVtIE5hbWVzcGFjZSB7Ci0gICAgICAgIEhUTUwsCi0gICAgICAgIFNWRywKLSAg
ICAgICAgTWF0aE1MCi0gICAgfTsKLQotcHVibGljOgotICAgIHR5cGVkZWYgVmVjdG9yPE5hbWVz
cGFjZSwgMT4gU3RhdGU7Ci0KLSAgICBleHBsaWNpdCBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3Io
Y29uc3QgSFRNTFBhcnNlck9wdGlvbnMmKTsKLQotICAgIHN0YXRpYyBTdGF0ZSBzdGF0ZUZvcihI
VE1MVHJlZUJ1aWxkZXIqKTsKLQotICAgIGNvbnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZXNwYWNlU3RhY2s7IH0KLSAgICB2b2lkIHNldFN0YXRlKGNvbnN0IFN0YXRlJiBz
dGF0ZSkgeyBtX25hbWVzcGFjZVN0YWNrID0gc3RhdGU7IH0KLQotICAgIGJvb2wgc2ltdWxhdGUo
Y29uc3QgQ29tcGFjdEhUTUxUb2tlbiYsIEhUTUxUb2tlbml6ZXIqKTsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IoSFRNTFRyZWVCdWlsZGVyKik7Ci0K
LSAgICBib29sIGluRm9yZWlnbkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX25hbWVzcGFjZVN0
YWNrLmxhc3QoKSAhPSBIVE1MOyB9Ci0KLSAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7
Ci0gICAgU3RhdGUgbV9uYW1lc3BhY2VTdGFjazsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="245484"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>