<?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>94289</bug_id>
          
          <creation_ts>2012-08-16 21:06:26 -0700</creation_ts>
          <short_desc>[Forms] Introduce SpinButtonElement.{cpp,h} into build</short_desc>
          <delta_ts>2012-08-17 01:18:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          <dependson>93943</dependson>
          <blocked>94311</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697844</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-08-16 21:06:26 -0700</bug_when>
    <thetext>This bug is a part of re-factoring SpinButtonElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697870</commentid>
    <comment_count>1</comment_count>
      <attachid>158993</attachid>
    <who name="">yosin</who>
    <bug_when>2012-08-16 22:03:56 -0700</bug_when>
    <thetext>Created attachment 158993
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697990</commentid>
    <comment_count>2</comment_count>
      <attachid>158993</attachid>
    <who name="">yosin</who>
    <bug_when>2012-08-17 00:48:37 -0700</bug_when>
    <thetext>Comment on attachment 158993
Patch 1

Could you review this patch?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697993</commentid>
    <comment_count>3</comment_count>
      <attachid>158993</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-17 00:53:04 -0700</bug_when>
    <thetext>Comment on attachment 158993
Patch 1

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698013</commentid>
    <comment_count>4</comment_count>
      <attachid>158993</attachid>
    <who name="">yosin</who>
    <bug_when>2012-08-17 01:11:22 -0700</bug_when>
    <thetext>Comment on attachment 158993
Patch 1

Clearing flags on attachment: 158993

Committed r125866: &lt;http://trac.webkit.org/changeset/125866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698014</commentid>
    <comment_count>5</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-08-17 01:11:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158993</attachid>
            <date>2012-08-16 22:03:56 -0700</date>
            <delta_ts>2012-08-17 01:11:21 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-94289-20120817140320.patch</filename>
            <type>text/plain</type>
            <size>41865</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFiNTNkZGMyNDYwMjM4
OWQ0M2Q5YzY3ZjJmM2Q3MmViZGJmYWEwZC4uOTJhMTdhYjMzZTNhY2YxZWEwZGUwNTcyNzVlYTlm
MzM3ZTBhY2FkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTE2ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBJbnRy
b2R1Y2UgU3BpbkJ1dHRvbkVsZW1lbnQue2NwcCxofSBpbnRvIGJ1aWxkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDI4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBo
dG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC57Y3BwLGh9IGludG8KKyAgICAgICAgYnVpbGQs
IGZpbGVzIHdlcmUgY29waWVkIGZyb20gVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLntjcHAsaH0g
YnkKKyAgICAgICAgYnVnIDkzOTQzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRj
aCBkb2Vzbid0IGNoYW5nZXMgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDog
QWRkZWQgU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogQWRkZWQgU3BpbkJ1dHRvbkVsZW1lbnQue2NwcCxofQorICAgICAgICAqIFRhcmdldC5wcmk6
IEFkZGVkIFNwaW5CdXR0b25FbGVtZW50LmNwcAorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRk
ZWQgU3BpbkJ1dHRvbkVsZW1lbnQue2NwcCxofQorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBBZGRlZCBTcGluQnV0dG9uRWxlbWVudC57Y3BwLGh9CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBTcGluQnV0dG9uRWxlbWVu
dC57Y3BwLGh9CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oOiBSZXBsYWNlZCBpbmNsdWRlIGZpbGUgdG8gU3BpbkJ1dHRvbkVsZW1lbnQuaCBmcm9tIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuaDogQWRkZWQgaW5jbHVkZSBmaWxlIFNwaW5CdXR0b25FbGVtZW50LmgKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50Lmg6IFJlcGxhY2VkIGluY2x1ZGUgZmlsZSB0
byBTcGluQnV0dG9uRWxlbWVudC5oIGZyb20gVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6IFJlbW92ZWQgY29kZSBv
dGhlciB0aGFuIFNwaW5CdXR0b25FbGVtZW50LgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5C
dXR0b25FbGVtZW50Lmg6IFJlbW92ZWQgY29kZSBvdGhlciB0aGFuIFNwaW5CdXR0b25FbGVtZW50
LgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6IFJl
bW92ZWQgY29kZSBvZiBTcGluQnV0dG9uRWxlbWVudC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDogUmVtb3ZlZCBTcGluQnV0dG9uRWxlbWVudC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOiBBZGRlZCBpbmNsdWRlIGZpbGUgU3Bp
bkJ1dHRvbkVsZW1lbnQuaAorCiAyMDEyLTA4LTE2ICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCByZXNvdXJjZSB0cmFuc2ZlciBm
dW5jdGlvbnMgdG8gQ0NSZXNvdXJjZVByb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBh
ZWQzOTJjYjgwYThiMjdhYjZiMWI2NTkwOTA3ZjU4NzE4MzFmYTQuLjg4MzExMmI1NGYzOTI3OGVl
MjI3OTI1YTI4YTFhODM5ZDM5MzBiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTAzLDYg
KzE1MDMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAK
ICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisgICAgaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAogCiAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg5NTc0OTY2MjIwYzc4MDg1NTQwMzk0YmQ2NmM5
OTg3MTQyNmJjNDYuLjg2YzE4YTMxNWJmNmYyNTNlNGE5OTBmOTMwYmY2ZmRmNWRkMDI5YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzQ3NCw2ICszNDc0LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IDI2ZWYxMDIyMTU0N2M5MzY5NTczZjE3MWMxZWM2ZDFmNzE5ZTI3N2MuLmM2MjUxYThmYWVm
ZGQ3MzM2NDRiODM5Zjc5OWRiMWVjZWNkNjA4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzE5LDYgKzcx
OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5j
cHAgXAogICAgIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAogICAgIGh0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXAorICAgIGh0bWwvc2hhZG93L1NwaW5C
dXR0b25FbGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCiAgICAgaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlmNWJhYTA3
YzlkOTYwOGYyYjQ0MGM5MDQ1OGZkMmYxMzBkMGUxZDAuLjVlOGYxYzc4Y2VkNGQ1OTZmODUyZmQw
ODM0MjgyZTU1ZjQzMTFlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU3NzEsNiArNTc3MSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oJywKKyAgICAgICAgICAgICdodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93
L1NwaW5CdXR0b25FbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBlNjRkZmM4ODEzYTA3M2EyOGZhNTlhY2QzOTIwNDZhOGNlZTgz
YjM4Li4yZWI1OGYwODk3YmFmZDBmZTVhNzU4NDkxMzRmOTQ5ZTE1Y2RmMjA4IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjM3ODYsNiArNjM3
ODYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcc2hhZG93XFNwaW5CdXR0b25FbGVtZW50LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNwaW5C
dXR0b25FbGVtZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4Y2RiNmI5YzhhMmRkNDY0MTI1ZjZlNTg3MjUxZWZm
NmZjOTY3ZjkuLjRkYzU0MDUyNzhiMjUwNGNiZGYzM2I1Yzc3OTU2NjQ1YzMzNGQyNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEyMTAsNiArMTIxMCw4IEBACiAJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MDk5
QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCAqLzsgfTsKIAkJNDUwQ0VCRjAxNTA3
M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUwQ0VCRUUxNTA3M0JCRTAwMkJCMTQ5IC8qIExh
YmVsYWJsZUVsZW1lbnQuY3BwICovOyB9OwogCQk0NTBDRUJGMTE1MDczQkJFMDAyQkIxNDkgLyog
TGFiZWxhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDUwQ0VCRUYxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NTEyNTAy
MjE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxMjUwMjAxNURDRTM3RDAwMkY4NEUy
IC8qIFNwaW5CdXR0b25FbGVtZW50LmNwcCAqLzsgfTsKKwkJNDUxMjUwMjMxNURDRTM3RDAwMkY4
NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NTEyNTAyMTE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVs
ZW1lbnQuaCAqLzsgfTsKIAkJNDUzRUI2MzYxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
M0VCNjM0MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5jcHAgKi87IH07CiAJCTQ1
M0VCNjM3MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3
IC8qIERhdGVUaW1lRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDU4RkU0MDkxNTg5REYwQjAwNTYwOUU2IC8qIFJlbmRlclNlYXJjaEZp
ZWxkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
OEZFNDA3MTU4OURGMEIwMDU2MDlFNiAvKiBSZW5kZXJTZWFyY2hGaWVsZC5jcHAgKi87IH07CkBA
IC04MzEyLDYgKzgzMTQsOCBAQAogCQk0NTA5OUM0MDEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVS
TC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uVVJMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUwQ0VCRUUxNTA3M0JCRTAwMkJCMTQ5IC8q
IExhYmVsYWJsZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGFiZWxhYmxlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1
MENFQkVGMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVsYWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDUxMjUwMjAxNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwaW5CdXR0b25F
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDUxMjUwMjExNURDRTM3
RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwaW5CdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ1M0VCNjM0MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlVGltZUZvcm1hdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1M0VCNjM1MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRl
VGltZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlVGltZUZv
cm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NThGRTQwNzE1ODlERjBCMDA1
NjA5RTYgLyogUmVuZGVyU2VhcmNoRmllbGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyU2VhcmNoRmllbGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ5MTksNiArMTQ5MjMsOCBAQAogCQkJCUE3MTVFNjUxMTM0QkJCRUMwMEQ4RTcx
MyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQk0MTUwRjlGMDEyQjZFMEU3MDAw
OEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAqLywKIAkJCQk0MTUwRjlFRjEyQjZFMEU3
MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi8sCisJCQkJNDUxMjUwMjAxNURDRTM3
RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmNwcCAqLywKKwkJCQk0NTEyNTAyMTE1RENF
MzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCAqLywKIAkJCQkxNDJCOTdDNzEzMTM4
OTQzMDA4QkVGNEIgLyogVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCAqLywKIAkJCQkxNDJC
OTdDODEzMTM4OTQzMDA4QkVGNEIgLyogVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggKi8sCiAJ
CQkpOwpAQCAtMjQ3ODcsNiArMjQ3OTMsNyBAQAogCQkJCTc1NDE1QjAwMTI5NThENUUwMDNBRDY2
OSAvKiBTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEZFMTND
MTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4
REJEQjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NTEyNTAyMzE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTEyMDk5RTY0OTIwMDU2RTU4MSAvKiBT
cGxpdEVsZW1lbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxNDA5OUU2NDky
MDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RTE2MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTc2LDYgKzI3OTgzLDcgQEAKIAkJCQk3NTQx
NUMyOTEyOUE5OTIwMDAzQUQ2NjkgLyogU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3OEZFMTNCMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDUxMjUwMjIxNURDRTM3
RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5RTExMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyog
U3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAppbmRleCA1NDQ1NzJjMjQ3OWEyNTM0ZTU3M2YyYzM4N2M4MTZjN2M0MjA0ODFh
Li41NGQ1OGZlYTVmYzc1YTFlNDVjOTE2MWRjMGNmYTI3MjViNWFiMDE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5o
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5o
IgogCi0jaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSAiU3Bp
bkJ1dHRvbkVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggNjM2MWFhNzVmNmNkMzdiMzNiN2Y5
YWYxZWRkZjMxMDg0NTI0OWRjZS4uNzY1M2JjMzJiY2E1NmY2OGZiNzU2Y2U4ZDUxOTRmNTM2ZWMx
MTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC0zMiwx
MiArMzIsMTIgQEAKICNkZWZpbmUgVGV4dEZpZWxkSW5wdXRUeXBlX2gKIAogI2luY2x1ZGUgIklu
cHV0VHlwZS5oIgorI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9ybURhdGFMaXN0OyAKLWNsYXNzIFNwaW5CdXR0b25FbGVtZW50OwogCiAvLyBUaGUgY2xhc3Mg
cmVwcmVzZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgogLy8gSXQg
c3VwcG9ydHMgbm90IG9ubHkgdGhlIHR5cGVzIGZvciBCYXNlVGV4dElucHV0VHlwZSBidXQgYWxz
byB0eXBlPW51bWJlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rh
dGVUaW1lRWRpdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1l
RWRpdEVsZW1lbnQuaAppbmRleCA0NjJmYWE0YTZlMDdlMzY3YjNhNjVkYzUwOWU3ZGExMWExOTcx
YWNhLi4yNTVmOTQ0OWJmNzVhYThkYTMyODkyOTQwODM0NzY1YzlkNmQzOWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5oCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUykK
ICNpbmNsdWRlICJEYXRlVGltZUZpZWxkRWxlbWVudC5oIgotI2luY2x1ZGUgIlRleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1
dHRvbkVsZW1lbnQuY3BwCmluZGV4IDI1NzViZWZjMDFlNWUyMjFmM2FkZmU0ZDE1ODM4NWY5ZDZm
YWQxNWMuLjJiNTgwOWNhNGYzNTVkODFlOTcyNWUzMzk1NTg0N2M4ZjFlZjdmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI1
LDIzMiArMjUsMjIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSAiU3BpbkJ1dHRvbkVsZW1lbnQuaCIK
IAotI2luY2x1ZGUgIkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVy
U2VhcmNoRmllbGQuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lLmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXQuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1
dEV2ZW50LmgiCi0jaW5jbHVkZSAiVGV4dEV2ZW50LmgiCi0jaW5jbHVkZSAiVGV4dEV2ZW50SW5w
dXRUeXBlLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRleHRDb250cm9sSW5uZXJFbGVtZW50
OjpUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1M
RGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotewotICAgIHNldEhhc0N1c3RvbUNhbGxiYWNr
cygpOwotfQotCi1QYXNzUmVmUHRyPFRleHRDb250cm9sSW5uZXJFbGVtZW50PiBUZXh0Q29udHJv
bElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KLVBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjdXN0b21TdHls
ZUZvclJlbmRlcmVyKCkKLXsKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUqIHBhcmVu
dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoc2hhZG93SG9zdCgpLT5y
ZW5kZXJlcigpKTsKLSAgICByZXR1cm4gcGFyZW50UmVuZGVyZXItPmNyZWF0ZUlubmVyQmxvY2tT
dHlsZShwYXJlbnRSZW5kZXJlci0+c3R5bGUoKSk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotaW5saW5lIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxEaXZF
bGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCi17Ci0gICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7
Ci19Ci0KLVBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoZG9jdW1lbnQpKTsK
LX0KLQotdm9pZCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQotewotICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91
bGQgYWRkIGEgd2F5IHRvIGhhdmUgZGVmYXVsdCBldmVudCBsaXN0ZW5lcnMuCi0gICAgLy8gVGhl
biB3ZSB3b3VsZCBhZGQgb25lIHRvIHRoZSB0ZXh0IGZpZWxkJ3MgaW5uZXIgZGl2LCBhbmQgd2Ug
d291bGRuJ3QgbmVlZCB0aGlzIHN1YmNsYXNzLgotICAgIC8vIE9yIHBvc3NpYmx5IHdlIGNvdWxk
IGp1c3QgdXNlIGEgbm9ybWFsIGV2ZW50IGxpc3RlbmVyLgotICAgIGlmIChldmVudC0+aXNCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudCgpIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLndl
YmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWRFdmVudCkgewotICAgICAgICBFbGVtZW50KiBzaGFk
b3dBbmNlc3RvciA9IHNoYWRvd0hvc3QoKTsKLSAgICAgICAgLy8gQSBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQgY2FuIGhhdmUgbm8gaG9zdCBpZiBpdHMgYmVlbiBkZXRhY2hlZCwKLSAgICAg
ICAgLy8gYnV0IGtlcHQgYWxpdmUgYnkgYW4gRWRpdENvbW1hbmQuIEluIHRoaXMgY2FzZSwgYW4g
dW5kby9yZWRvIGNhbgotICAgICAgICAvLyBjYXVzZSBldmVudHMgdG8gYmUgc2VudCB0byB0aGUg
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50LiBUbwotICAgICAgICAvLyBwcmV2ZW50IGFuIGlu
ZmluaXRlIGxvb3AsIHdlIG11c3QgY2hlY2sgZm9yIHRoaXMgY2FzZSBiZWZvcmUgc2VuZGluZwot
ICAgICAgICAvLyB0aGUgZXZlbnQgdXAgdGhlIGNoYWluLgotICAgICAgICBpZiAoc2hhZG93QW5j
ZXN0b3IpCi0gICAgICAgICAgICBzaGFkb3dBbmNlc3Rvci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7Ci0gICAgfQotICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAgICAg
IEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQotUmVuZGVy
T2JqZWN0KiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQotewotICAgIGJvb2wgbXVsdGlMaW5lID0gZmFs
c2U7Ci0gICAgRWxlbWVudCogc2hhZG93QW5jZXN0b3IgPSBzaGFkb3dIb3N0KCk7Ci0gICAgaWYg
KHNoYWRvd0FuY2VzdG9yICYmIHNoYWRvd0FuY2VzdG9yLT5yZW5kZXJlcigpKSB7Ci0gICAgICAg
IEFTU0VSVChzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNUZXh0RmllbGQoKSB8fCBzaGFk
b3dBbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNUZXh0QXJlYSgpKTsKLSAgICAgICAgbXVsdGlMaW5l
ID0gc2hhZG93QW5jZXN0b3ItPnJlbmRlcmVyKCktPmlzVGV4dEFyZWEoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayh0aGlzLCBtdWx0
aUxpbmUpOwotfQotCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKQotewotICAgIFJlbmRlclRleHRDb250
cm9sKiBwYXJlbnRSZW5kZXJlciA9IHRvUmVuZGVyVGV4dENvbnRyb2woc2hhZG93SG9zdCgpLT5y
ZW5kZXJlcigpKTsKLSAgICByZXR1cm4gcGFyZW50UmVuZGVyZXItPmNyZWF0ZUlubmVyVGV4dFN0
eWxlKHBhcmVudFJlbmRlcmVyLT5zdHlsZSgpKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1pbmxpbmUgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6U2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBI
VE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotewotfQotCi1QYXNzUmVmUHRyPFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBy
ZXN1bHRzSWQsICgiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iKSk7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc3VsdHNEZWNvcmF0aW9uSWQsICgiLXdlYmtp
dC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBkZWNvcmF0aW9uSWQsICgiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIp
KTsKLSAgICBFbGVtZW50KiBob3N0ID0gc2hhZG93SG9zdCgpOwotICAgIGlmICghaG9zdCkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdHNJZDsKLSAgICBpZiAoSFRNTElucHV0RWxlbWVudCogaW5wdXQg
PSBob3N0LT50b0lucHV0RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpbnB1dC0+bWF4UmVzdWx0
cygpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBkZWNvcmF0aW9uSWQ7Ci0gICAgICAgIGlmIChp
bnB1dC0+bWF4UmVzdWx0cygpID4gMCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRzSWQ7Ci0g
ICAgICAgIHJldHVybiByZXN1bHRzRGVjb3JhdGlvbklkOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0c0lkOwotfQotCi12b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIC8vIE9uIG1vdXNlZG93biwgYnJp
bmcgdXAgYSBtZW51LCBpZiBuZWVkZWQKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpOwotICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3Vz
ZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0g
TGVmdEJ1dHRvbikgewotICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKLSAgICAgICAgaW5wdXQtPnNl
bGVjdCgpOwotICAgICAgICBSZW5kZXJTZWFyY2hGaWVsZCogcmVuZGVyZXIgPSB0b1JlbmRlclNl
YXJjaEZpZWxkKGlucHV0LT5yZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5wb3B1
cElzVmlzaWJsZSgpKQotICAgICAgICAgICAgcmVuZGVyZXItPmhpZGVQb3B1cCgpOwotICAgICAg
ICBlbHNlIGlmIChpbnB1dC0+bWF4UmVzdWx0cygpID4gMCkKLSAgICAgICAgICAgIHJlbmRlcmVy
LT5zaG93UG9wdXAoKTsKLSAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAg
fQotCi0gICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgSFRNTERpdkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi1ib29sIFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKLXsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1pbmxpbmUgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTERpdkVsZW1lbnQo
ZGl2VGFnLCBkb2N1bWVudCkKLSAgICAsIG1fY2FwdHVyaW5nKGZhbHNlKQotewotfQotCi1QYXNz
UmVmUHRyPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7Ci19
Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iKSk7Ci0gICAg
cmV0dXJuIHBzZXVkb0lkOwotfQotCi12b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6ZGV0YWNoKCkKLXsKLSAgICBpZiAobV9jYXB0dXJpbmcpIHsKLSAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKLSAgICB9Ci0gICAgSFRN
TERpdkVsZW1lbnQ6OmRldGFjaCgpOwotfQotCi0KLXZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICAvLyBJ
ZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLCBvbiBtb3VzZXVwLCBjbGVhciB0aGUgdmFsdWUsIGFu
ZCBzZXQgc2VsZWN0aW9uCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0KHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpKTsKLSAgICBpZiAoaW5wdXQt
PmRpc2FibGVkKCkgfHwgaW5wdXQtPnJlYWRPbmx5KCkpIHsKLSAgICAgICAgaWYgKCFldmVudC0+
ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3Vz
ZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0g
TGVmdEJ1dHRvbikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT52aXNp
YmxlVG9IaXRUZXN0aW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9j
YXB0dXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlucHV0
LT5mb2N1cygpOwotICAgICAgICBpbnB1dC0+c2VsZWN0KCk7Ci0gICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2Fz
dDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAg
IGlmIChtX2NhcHR1cmluZykgewotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKLSAgICAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGhvdmVyZWQoKSkg
ewotICAgICAgICAgICAgICAgIFN0cmluZyBvbGRWYWx1ZSA9IGlucHV0LT52YWx1ZSgpOwotICAg
ICAgICAgICAgICAgIGlucHV0LT5zZXRWYWx1ZUZvclVzZXIoIiIpOwotICAgICAgICAgICAgICAg
IGlucHV0LT5vblNlYXJjaCgpOwotICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFldmVu
dC0+ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwotfQotCi1ib29sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQotewotICAgIGNvbnN0IEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0hv
c3QoKSk7Ci0gICAgaWYgKCFpbnB1dC0+ZGlzYWJsZWQoKSAmJiAhaW5wdXQtPnJlYWRPbmx5KCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KIGlubGluZSBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBTdGVwQWN0aW9uSGFuZGxlciYgc3RlcEFjdGlvbkhhbmRsZXIp
CiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9zdGVwQWN0
aW9uSGFuZGxlcigmc3RlcEFjdGlvbkhhbmRsZXIpCkBAIC00NDksMjA3ICsyMzksNCBAQCB2b2lk
IFNwaW5CdXR0b25FbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZykKICAgICBIVE1MRGl2RWxl
bWVudDo6c2V0SG92ZXJlZChmbGFnKTsKIH0KIAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCi1pbmxpbmUgSW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCi0gICAg
LCBtX2NhcHR1cmluZyhmYWxzZSkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fbGlzdGVu
ZXJJZCgwKQotewotfQotCi1JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6fklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50KCkKLXsKLSAgICBTcGVlY2hJbnB1dCogc3BlZWNoID0gc3Bl
ZWNoSW5wdXQoKTsKLSAgICBpZiAoc3BlZWNoICYmIG1fbGlzdGVuZXJJZCkgIHsgLy8gQ291bGQg
YmUgbnVsbCB3aGVuIHBhZ2UgaXMgdW5sb2FkaW5nLgotICAgICAgICBpZiAobV9zdGF0ZSAhPSBJ
ZGxlKQotICAgICAgICAgICAgc3BlZWNoLT5jYW5jZWxSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQp
OwotICAgICAgICBzcGVlY2gtPnVucmVnaXN0ZXJMaXN0ZW5lcihtX2xpc3RlbmVySWQpOwotICAg
IH0KLX0KLQotUGFzc1JlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChkb2N1
bWVudCkpOwotfQotCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICAvLyBGb3IgcHJpdmFjeSByZWFzb25z
LCBvbmx5IGFsbG93IGNsaWNrcyBkaXJlY3RseSBjb21pbmcgZnJvbSB0aGUgdXNlci4KLSAgICBp
ZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAg
IEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIFRoZSBjYWxsIHRvIGZvY3VzKCkgYmVsb3cgZGlzcGF0Y2hl
cyBhIGZvY3VzIGV2ZW50LCBhbmQgYW4gZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdodAot
ICAgIC8vIHJlbW92ZSB0aGUgaW5wdXQgZWxlbWVudCBmcm9tIERPTS4gVG8gbWFrZSBzdXJlIGl0
IHJlbWFpbnMgdmFsaWQgdW50aWwgd2UgZmluaXNoIG91ciB3b3JrCi0gICAgLy8gaGVyZSwgd2Ug
dGFrZSBhIHRlbXBvcmFyeSByZWZlcmVuY2UuCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpKTsKLQot
ICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+cmVhZE9ubHkoKSkgewotICAgICAg
ICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQotICAgICAgICAgICAgSFRNTERpdkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gT24gbW91c2UgZG93biwgc2VsZWN0IHRoZSB0ZXh0IGFuZCBzZXQgZm9jdXMuCi0g
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGV2
ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkgewotICAgICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKLSAgICAgICAg
ICAgICAgICBtX2NhcHR1cmluZyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgUmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50PiBob2xkUmVmQnV0dG9u
KHRoaXMpOwotICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKLSAgICAgICAgaW5wdXQtPnNlbGVjdCgp
OwotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgLy8gT24g
bW91c2UgdXAsIHJlbGVhc2UgY2FwdHVyZSBjbGVhbmx5LgotICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgpICYm
IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0b24p
IHsKLSAgICAgICAgaWYgKG1fY2FwdHVyaW5nICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
dmlzaWJsZVRvSGl0VGVzdGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwotICAgICAgICAgICAgICAgIG1f
Y2FwdHVyaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAmJiBtX2xpc3Rl
bmVySWQpIHsKLSAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgSWRsZToK
LSAgICAgICAgICAgIHN0YXJ0U3BlZWNoSW5wdXQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFJlY29yZGluZzoKLSAgICAgICAgICAgIHN0b3BTcGVlY2hJbnB1dCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVjb2duaXppbmc6Ci0gICAgICAgICAgICAv
LyBOb3RoaW5nIHRvIGRvIGhlcmUsIHdlIHdpbGwgY29udGludWUgdG8gd2FpdCBmb3IgcmVzdWx0
cy4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwotICAgIH0KLQotICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkp
Ci0gICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0K
LQotYm9vbCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQotewotICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0hvc3QoKSk7Ci0gICAgaWYgKCFpbnB1
dC0+ZGlzYWJsZWQoKSAmJiAhaW5wdXQtPnJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpOwotfQotCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRTdGF0
ZShTcGVlY2hJbnB1dFN0YXRlIHN0YXRlKQotewotICAgIGlmIChtX3N0YXRlICE9IHN0YXRlKSB7
Ci0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsKLSAgICAgICAgc2hhZG93SG9zdCgpLT5yZW5kZXJl
cigpLT5yZXBhaW50KCk7Ci0gICAgfQotfQotCi1TcGVlY2hJbnB1dCogSW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OnNwZWVjaElucHV0KCkKLXsKLSAgICByZXR1cm4gU3BlZWNoSW5wdXQ6
OmZyb20oZG9jdW1lbnQoKS0+cGFnZSgpKTsKLX0KLQotdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50KQotewotICAgIHNldFN0YXRlKFJl
Y29nbml6aW5nKTsKLX0KLQotdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGlk
Q29tcGxldGVSZWNvZ25pdGlvbihpbnQpCi17Ci0gICAgc2V0U3RhdGUoSWRsZSk7Ci19Ci0KLXZv
aWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGlu
dCwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cykKLXsKLSAgICBtX3Jlc3Vs
dHMgPSByZXN1bHRzOwotCi0gICAgLy8gVGhlIGNhbGwgdG8gc2V0VmFsdWUoKSBiZWxvdyBkaXNw
YXRjaGVzIGFuIGV2ZW50LCBhbmQgYW4gZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdodAot
ICAgIC8vIHJlbW92ZSB0aGUgaW5wdXQgZWxlbWVudCBmcm9tIERPTS4gVG8gbWFrZSBzdXJlIGl0
IHJlbWFpbnMgdmFsaWQgdW50aWwgd2UgZmluaXNoIG91ciB3b3JrCi0gICAgLy8gaGVyZSwgd2Ug
dGFrZSBhIHRlbXBvcmFyeSByZWZlcmVuY2UuCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpKTsKLSAg
ICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPnJlYWRPbmx5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gaG9sZFJl
ZkJ1dHRvbih0aGlzKTsKLSAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5kb21XaW5k
b3coKSkgewotICAgICAgICAvLyBDYWxsIHNlbGVjdGlvbkNoYW5nZWQsIGNhdXNpbmcgdGhlIGVs
ZW1lbnQgdG8gY2FjaGUgdGhlIHNlbGVjdGlvbiwKLSAgICAgICAgLy8gc28gdGhhdCB0aGUgdGV4
dCBldmVudCBpbnNlcnRzIHRoZSB0ZXh0IGluIHRoaXMgZWxlbWVudCBldmVuIGlmCi0gICAgICAg
IC8vIGZvY3VzIGhhcyBtb3ZlZCBhd2F5IGZyb20gaXQuCi0gICAgICAgIGlucHV0LT5zZWxlY3Rp
b25DaGFuZ2VkKGZhbHNlKTsKLSAgICAgICAgaW5wdXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50
OjpjcmVhdGUoZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHJlc3VsdHMuaXNFbXB0eSgpID8gIiIg
OiByZXN1bHRzWzBdLT51dHRlcmFuY2UoKSwgVGV4dEV2ZW50SW5wdXRPdGhlcikpOwotICAgIH0K
LQotICAgIC8vIFRoaXMgZXZlbnQgaXMgc2VudCBhZnRlciB0aGUgdGV4dCBldmVudCBzbyB0aGUg
d2Vic2l0ZSBjYW4gcGVyZm9ybSBhY3Rpb25zIHVzaW5nIHRoZSBpbnB1dCBmaWVsZCBjb250ZW50
IGltbWVkaWF0ZWx5LgotICAgIC8vIEl0IHByb3ZpZGVzIGFsdGVybmF0aXZlIHJlY29nbml0aW9u
IGh5cG90aGVzZXMgYW5kIG5vdGlmaWVzIHRoYXQgdGhlIHJlc3VsdHMgY29tZSBmcm9tIHNwZWVj
aCBpbnB1dC4KLSAgICBpbnB1dC0+ZGlzcGF0Y2hFdmVudChTcGVlY2hJbnB1dEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdHNwZWVjaGNoYW5nZUV2ZW50LCByZXN1bHRzKSk7Ci0KLSAg
ICAvLyBDaGVjayBiZWZvcmUgYWNjZXNzaW5nIHRoZSByZW5kZXJlciBhcyB0aGUgYWJvdmUgZXZl
bnQgY291bGQgaGF2ZSBwb3RlbnRpYWxseSB0dXJuZWQgb2ZmCi0gICAgLy8gc3BlZWNoIGluIHRo
ZSBpbnB1dCBlbGVtZW50LCBoZW5jZSByZW1vdmluZyB0aGlzIGJ1dHRvbiBhbmQgcmVuZGVyZXIg
ZnJvbSB0aGUgaGllcmFyY2h5LgotICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICByZW5kZXJl
cigpLT5yZXBhaW50KCk7Ci19Ci0KLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OmF0dGFjaCgpCi17Ci0gICAgQVNTRVJUKCFtX2xpc3RlbmVySWQpOwotICAgIGlmIChTcGVlY2hJ
bnB1dCogaW5wdXQgPSBTcGVlY2hJbnB1dDo6ZnJvbShkb2N1bWVudCgpLT5wYWdlKCkpKQotICAg
ICAgICBtX2xpc3RlbmVySWQgPSBpbnB1dC0+cmVnaXN0ZXJMaXN0ZW5lcih0aGlzKTsKLSAgICBI
VE1MRGl2RWxlbWVudDo6YXR0YWNoKCk7Ci19Ci0KLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQ6OmRldGFjaCgpCi17Ci0gICAgaWYgKG1fY2FwdHVyaW5nKSB7Ci0gICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7Ci0gICAgfQot
Ci0gICAgaWYgKG1fbGlzdGVuZXJJZCkgewotICAgICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQot
ICAgICAgICAgICAgc3BlZWNoSW5wdXQoKS0+Y2FuY2VsUmVjb2duaXRpb24obV9saXN0ZW5lcklk
KTsKLSAgICAgICAgc3BlZWNoSW5wdXQoKS0+dW5yZWdpc3Rlckxpc3RlbmVyKG1fbGlzdGVuZXJJ
ZCk7Ci0gICAgICAgIG1fbGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotCi0gICAgSFRNTERpdkVsZW1l
bnQ6OmRldGFjaCgpOwotfQotCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpz
dGFydFNwZWVjaElucHV0KCkKLXsKLSAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93SG9zdCgpKTsKLSAgICBBdG9taWNTdHJpbmcgbGFu
Z3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7Ci0gICAgU3RyaW5nIGdy
YW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKLSAgICBJbnRS
ZWN0IHJlY3QgPSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhnZXRQaXhl
bFNuYXBwZWRSZWN0KCkpOwotICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9u
KG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpKQotICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwotfQotCi12b2lkIElu
cHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdG9wU3BlZWNoSW5wdXQoKQotewotICAgIGlm
IChtX3N0YXRlID09IFJlY29yZGluZykKLSAgICAgICAgc3BlZWNoSW5wdXQoKS0+c3RvcFJlY29y
ZGluZyhtX2xpc3RlbmVySWQpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtaW5wdXQtc3Bl
ZWNoLWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gcHNldWRvSWQ7Ci19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuaAppbmRleCAxZDJlMTA4NGNkYzE2OTZiNzhkNmY1MWI5Y2JmMzRkNjQz
MGE4OTFkLi5mZTMxZmRmMzRmZmNmNzQzYzE4MmNhNjEwMzRlNDQ5OTkxNDFjODlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKQEAgLTI0LDcy
ICsyNCwxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KICAKLSNpZm5kZWYgVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzX2gKLSNkZWZpbmUgVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzX2gKKyNpZm5k
ZWYgU3BpbkJ1dHRvbkVsZW1lbnRfaAorI2RlZmluZSBTcGluQnV0dG9uRWxlbWVudF9oCiAKICNp
bmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BlZWNoSW5wdXQ7Ci0KLWNsYXNzIFRleHRDb250cm9s
SW5uZXJFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
Ci0KLXByb3RlY3RlZDoKLSAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCopOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJl
cigpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLX07Ci0KLWNsYXNzIFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0K
LXByaXZhdGU6Ci0gICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Kik7Ci0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3Vz
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi1jbGFzcyBTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkg
T1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVu
dChEb2N1bWVudCopOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLX07Ci0KLWNsYXNzIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxl
bWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0KLXBy
aXZhdGU6Ci0gICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Kik7Ci0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgbV9jYXB0dXJpbmc7Ci19
OwotCiBjbGFzcyBTcGluQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBw
dWJsaWM6CiAgICAgZW51bSBVcERvd25TdGF0ZSB7CkBAIC0xNDQsNTYgKzg3LDYgQEAgcHJpdmF0
ZToKICAgICBUaW1lcjxTcGluQnV0dG9uRWxlbWVudD4gbV9yZXBlYXRpbmdUaW1lcjsKIH07CiAK
LSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCi1jbGFzcyBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudAotICAgIDogcHVibGljIEhUTUxEaXZFbGVtZW50LAotICAgICAgcHVibGljIFNwZWVj
aElucHV0TGlzdGVuZXIgewotcHVibGljOgotICAgIGVudW0gU3BlZWNoSW5wdXRTdGF0ZSB7Ci0g
ICAgICAgIElkbGUsCi0gICAgICAgIFJlY29yZGluZywKLSAgICAgICAgUmVjb2duaXppbmcsCi0g
ICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5JbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudCgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7Ci0gICAgdmlydHVhbCBib29sIGlzSW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU3BlZWNo
SW5wdXRTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICB2b2lkIHN0
YXJ0U3BlZWNoSW5wdXQoKTsKLSAgICB2b2lkIHN0b3BTcGVlY2hJbnB1dCgpOwotCi0gICAgLy8g
U3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgotICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRp
bmcoaW50KTsKLSAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKLSAgICB2b2lk
IHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYp
OwotCi1wcml2YXRlOgotICAgIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KERvY3VtZW50
Kik7Ci0gICAgU3BlZWNoSW5wdXQqIHNwZWVjaElucHV0KCk7Ci0gICAgdm9pZCBzZXRTdGF0ZShT
cGVlY2hJbnB1dFN0YXRlIHN0YXRlKTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
c2hhZG93UHNldWRvSWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwot
Ci0gICAgYm9vbCBtX2NhcHR1cmluZzsKLSAgICBTcGVlY2hJbnB1dFN0YXRlIG1fc3RhdGU7Ci0g
ICAgaW50IG1fbGlzdGVuZXJJZDsKLSAgICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IG1fcmVzdWx0
czsKLX07Ci0KLWlubGluZSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCogdG9JbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVCgh
ZWxlbWVudCB8fCBlbGVtZW50LT5pc0lucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCo+KGVs
ZW1lbnQpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKLQogfSAvLyBuYW1l
c3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA3OTIxYTBkMjhjZTE5ZDdmMGVlYzk4
MGE3MjkxYTU0MTJjODNiN2QwLi5jNThmMTc2Zjc5NTAyNjQ3YTIyZjhjNjExNGNjMzJiYTM3ZWU5
ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTQwLDEyICs0MCwxMCBAQAogI2luY2x1ZGUgIlJlbmRl
clNlYXJjaEZpZWxkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNw
ZWVjaElucHV0LmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIlRl
eHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRFdmVudElucHV0VHlwZS5oIgotI2luY2x1ZGUgIldo
ZWVsRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNDUsMjA3ICsyNDMsNiBA
QCBib29sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
LCBTdGVwQWN0aW9uSGFuZGxlciYgc3RlcEFjdGlvbkhhbmRsZXIpCi0gICAgOiBIVE1MRGl2RWxl
bWVudChkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9zdGVwQWN0aW9uSGFuZGxlcigmc3RlcEFj
dGlvbkhhbmRsZXIpCi0gICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKLSAgICAsIG1fdXBEb3duU3Rh
dGUoSW5kZXRlcm1pbmF0ZSkKLSAgICAsIG1fcHJlc3NTdGFydGluZ1N0YXRlKEluZGV0ZXJtaW5h
dGUpCi0gICAgLCBtX3JlcGVhdGluZ1RpbWVyKHRoaXMsICZTcGluQnV0dG9uRWxlbWVudDo6cmVw
ZWF0aW5nVGltZXJGaXJlZCkKLXsKLX0KLQotUGFzc1JlZlB0cjxTcGluQnV0dG9uRWxlbWVudD4g
U3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFN0ZXBBY3Rpb25I
YW5kbGVyJiBzdGVwQWN0aW9uSGFuZGxlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNw
aW5CdXR0b25FbGVtZW50KGRvY3VtZW50LCBzdGVwQWN0aW9uSGFuZGxlcikpOwotfQotCi1jb25z
dCBBdG9taWNTdHJpbmcmIFNwaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlubmVyUHNldWRvSWQs
ICgiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gaW5uZXJQc2V1ZG9J
ZDsKLX0KLQotdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKLXsKLSAgICByZWxlYXNl
Q2FwdHVyZSgpOwotICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goKTsKLX0KLQotdm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAg
aWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKLSAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVs
dEhhbmRsZWQoKSkKLSAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlbmRlckJveCogYm94
ID0gcmVuZGVyQm94KCk7Ci0gICAgaWYgKCFib3gpIHsKLSAgICAgICAgaWYgKCFldmVudC0+ZGVm
YXVsdEhhbmRsZWQoKSkKLSAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxIVE1M
SW5wdXRFbGVtZW50PiBpbnB1dChzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93
SG9zdCgpKSk7Ci0gICAgaWYgKGlucHV0LT5kaXNhYmxlZCgpIHx8IGlucHV0LT5yZWFkT25seSgp
KSB7Ci0gICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAgICAgICAgICBI
VE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91
c2VFdmVudCo+KGV2ZW50KTsKLSAgICBJbnRQb2ludCBsb2NhbCA9IHJvdW5kZWRJbnRQb2ludChi
b3gtPmFic29sdXRlVG9Mb2NhbChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNl
LCB0cnVlKSk7Ci0gICAgaWYgKG1vdXNlRXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2Vkb3duRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAg
ICAgICBpZiAoYm94LT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuY29udGFpbnMobG9jYWwp
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiBIVE1MSW5wdXRF
bGVtZW50IG1heSBydW4gSmF2YVNjcmlwdAotICAgICAgICAgICAgLy8gY29kZSB3aGljaCBkZXRh
Y2hlcyB0aGlzIHNoYWRvdyBub2RlLiBXZSBuZWVkIHRvIHRha2UgYSByZWZlcmVuY2UKLSAgICAg
ICAgICAgIC8vIGFuZCBjaGVjayByZW5kZXJlcigpIGFmdGVyIHN1Y2ggZnVuY3Rpb24gY2FsbHMu
Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdG9yKHRoaXMpOwotICAgICAgICAgICAg
aW5wdXQtPmZvY3VzKCk7Ci0gICAgICAgICAgICBpbnB1dC0+c2VsZWN0KCk7Ci0gICAgICAgICAg
ICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX3VwRG93blN0YXRlICE9
IEluZGV0ZXJtaW5hdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9TdGVwQWN0aW9uKG1fdXBE
b3duU3RhdGUgPT0gVXAgPyAxIDogLTEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVwZWF0aW5nVGltZXIoKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobW91c2VFdmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkg
PT0gTGVmdEJ1dHRvbikKLSAgICAgICAgc3RvcFJlcGVhdGluZ1RpbWVyKCk7Ci0gICAgZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKLSAgICAg
ICAgaWYgKGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLmNvbnRhaW5zKGxvY2FsKSkg
ewotICAgICAgICAgICAgaWYgKCFtX2NhcHR1cmluZykgewotICAgICAgICAgICAgICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMp
OwotICAgICAgICAgICAgICAgICAgICBtX2NhcHR1cmluZyA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgVXBEb3duU3RhdGUgb2xkVXBEb3duU3Rh
dGUgPSBtX3VwRG93blN0YXRlOwotICAgICAgICAgICAgbV91cERvd25TdGF0ZSA9IGxvY2FsLnko
KSA8IGJveC0+aGVpZ2h0KCkgLyAyID8gVXAgOiBEb3duOwotICAgICAgICAgICAgaWYgKG1fdXBE
b3duU3RhdGUgIT0gb2xkVXBEb3duU3RhdGUpCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
cmVwYWludCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVsZWFzZUNhcHR1cmUo
KTsKLSAgICAgICAgICAgIG1fdXBEb3duU3RhdGUgPSBJbmRldGVybWluYXRlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgSFRN
TERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi12b2lkIFNwaW5C
dXR0b25FbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQqIGV2ZW50KQotewotICAgIGlmICghcmVu
ZGVyQm94KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZXZlbnQtPmhhc0ludGVyZmFj
ZShldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yV2hlZWxFdmVudCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KHNoYWRvd0hvc3QoKSk7Ci0gICAgaWYgKGlucHV0LT5kaXNhYmxlZCgpIHx8IGlucHV0
LT5yZWFkT25seSgpIHx8ICFpbnB1dC0+Zm9jdXNlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBkb1N0ZXBBY3Rpb24oc3RhdGljX2Nhc3Q8V2hlZWxFdmVudCo+KGV2ZW50KS0+d2hlZWxEZWx0
YVkoKSk7Ci0gICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci19Ci0KLWJvb2wgU3BpbkJ1
dHRvbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQotewotICAgIGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KHNoYWRvd0hvc3QoKSk7Ci0gICAgaWYgKHJlbmRlckJveCgpICYmICFpbnB1dC0+ZGlzYWJsZWQo
KSAmJiAhaW5wdXQtPnJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0
dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7Ci19Ci0K
LWJvb2wgU3BpbkJ1dHRvbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkK
LXsKLSAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpOwotICAgIGlmIChyZW5kZXJCb3goKSAmJiAhaW5w
dXQtPmRpc2FibGVkKCkgJiYgIWlucHV0LT5yZWFkT25seSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKTsKLX0KLQotdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZG9TdGVwQWN0aW9uKGludCBh
bW91bnQpCi17Ci0gICAgaWYgKCFtX3N0ZXBBY3Rpb25IYW5kbGVyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoYW1vdW50ID4gMCkKLSAgICAgICAgbV9zdGVwQWN0aW9uSGFuZGxlci0+c3Bp
bkJ1dHRvblN0ZXBVcCgpOwotICAgIGVsc2UgaWYgKGFtb3VudCA8IDApCi0gICAgICAgIG1fc3Rl
cEFjdGlvbkhhbmRsZXItPnNwaW5CdXR0b25TdGVwRG93bigpOwotfQotCi12b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCi17Ci0gICAgc3RvcFJlcGVhdGluZ1RpbWVyKCk7
Ci0gICAgaWYgKG1fY2FwdHVyaW5nKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKLSAgICAgICAgICAgIG1fY2FwdHVyaW5nID0g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNo
b3VsZE1hdGNoUmVhZE9ubHlTZWxlY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNoYWRvd0hv
c3QoKS0+c2hvdWxkTWF0Y2hSZWFkT25seVNlbGVjdG9yKCk7Ci19Ci0KLWJvb2wgU3BpbkJ1dHRv
bkVsZW1lbnQ6OnNob3VsZE1hdGNoUmVhZFdyaXRlU2VsZWN0b3IoKSBjb25zdAotewotICAgIHJl
dHVybiBzaGFkb3dIb3N0KCktPnNob3VsZE1hdGNoUmVhZFdyaXRlU2VsZWN0b3IoKTsKLX0KLQot
dm9pZCBTcGluQnV0dG9uRWxlbWVudDo6c3RhcnRSZXBlYXRpbmdUaW1lcigpCi17Ci0gICAgbV9w
cmVzc1N0YXJ0aW5nU3RhdGUgPSBtX3VwRG93blN0YXRlOwotICAgIFNjcm9sbGJhclRoZW1lKiB0
aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOwotICAgIG1fcmVwZWF0aW5nVGltZXIuc3Rh
cnQodGhlbWUtPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpLCB0aGVtZS0+YXV0b3Njcm9s
bFRpbWVyRGVsYXkoKSk7Ci19Ci0KLXZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnN0b3BSZXBlYXRp
bmdUaW1lcigpCi17Ci0gICAgbV9yZXBlYXRpbmdUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgU3Bp
bkJ1dHRvbkVsZW1lbnQ6OnN0ZXAoaW50IGFtb3VudCkKLXsKLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkpOwot
ICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+cmVhZE9ubHkoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIC8vIE9uIE1hYyBPUywgTlNTdGVwcGVyIHVwZGF0ZXMgdGhlIHZhbHVlIGZv
ciB0aGUgYnV0dG9uIHVuZGVyIHRoZSBtb3VzZQotICAgIC8vIGN1cnNvciByZWdhcmRsZXNzIG9m
IHRoZSBidXR0b24gcHJlc3NlZCBhdCB0aGUgYmVnaW5uaW5nLiBTbyB0aGUKLSAgICAvLyBmb2xs
b3dpbmcgY2hlY2sgaXMgbm90IG5lZWRlZCBmb3IgTWFjIE9TLgotI2lmICFPUyhNQUNfT1NfWCkK
LSAgICBpZiAobV91cERvd25TdGF0ZSAhPSBtX3ByZXNzU3RhcnRpbmdTdGF0ZSkKLSAgICAgICAg
cmV0dXJuOwotI2VuZGlmCi0gICAgZG9TdGVwQWN0aW9uKGFtb3VudCk7Ci19Ci0gICAgCi12b2lk
IFNwaW5CdXR0b25FbGVtZW50OjpyZXBlYXRpbmdUaW1lckZpcmVkKFRpbWVyPFNwaW5CdXR0b25F
bGVtZW50PiopCi17Ci0gICAgaWYgKG1fdXBEb3duU3RhdGUgIT0gSW5kZXRlcm1pbmF0ZSkKLSAg
ICAgICAgc3RlcChtX3VwRG93blN0YXRlID09IFVwID8gMSA6IC0xKTsKLX0KLQotdm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCi17Ci0gICAgaWYgKCFmbGFnKQot
ICAgICAgICBtX3VwRG93blN0YXRlID0gSW5kZXRlcm1pbmF0ZTsKLSAgICBIVE1MRGl2RWxlbWVu
dDo6c2V0SG92ZXJlZChmbGFnKTsKLX0KLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBpbmxpbmUgSW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgKaW5kZXggMWQyZTEwODRjZGMxNjk2Yjc4ZDZmNTFiOWNiZjM0ZDY0
MzBhODkxZC4uOGFjZDc3MDhmZGViYWE2NjU3ZDFjNmRhODc3Mjk0OGY0ZDVhZGRiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNjAgKzg5
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FwdHVyaW5nOwogfTsKIAotY2xhc3MgU3BpbkJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewotcHVibGljOgotICAgIGVudW0g
VXBEb3duU3RhdGUgewotICAgICAgICBJbmRldGVybWluYXRlLCAvLyBIb3ZlcmVkLCBidXQgdGhl
IGV2ZW50IGlzIG5vdCBoYW5kbGVkLgotICAgICAgICBEb3duLAotICAgICAgICBVcCwKLSAgICB9
OwotCi0gICAgY2xhc3MgU3RlcEFjdGlvbkhhbmRsZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB+U3RlcEFjdGlvbkhhbmRsZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNw
aW5CdXR0b25TdGVwRG93bigpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25T
dGVwVXAoKSA9IDA7Ci0gICAgfTsKLQotICAgIC8vIFRoZSBvd25lciBvZiBTcGluQnV0dG9uRWxl
bWVudCBtdXN0IGNhbGwgcmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIKLSAgICAvLyBiZWNhdXNlIFNw
aW5CdXR0b25FbGVtZW50IGNhbiBiZSBvdXRsaXZlIFN0ZXBBY3Rpb25IYW5kbGVyCi0gICAgLy8g
aW1wbGVtZW50YXRpb24sIGUuZy4gZHVyaW5nIGV2ZW50IGhhbmRsaW5nLgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBTdGVwQWN0aW9u
SGFuZGxlciYpOwotICAgIFVwRG93blN0YXRlIHVwRG93blN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV91cERvd25TdGF0ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQ2FwdHVyZSgpOwotICAg
IHZvaWQgcmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKSB7IG1fc3RlcEFjdGlvbkhhbmRsZXIgPSAw
OyB9Ci0KLSAgICB2b2lkIHN0ZXAoaW50IGFtb3VudCk7Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKLQotICAgIHZvaWQg
Zm9yd2FyZEV2ZW50KEV2ZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgU3BpbkJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqLCBTdGVwQWN0aW9uSGFuZGxlciYpOwotCi0gICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIHNoYWRvd0hvc3QoKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRNYXRjaFJlYWRPbmx5U2VsZWN0b3IoKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTWF0Y2hSZWFkV3JpdGVTZWxlY3RvcigpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0g
ICAgdm9pZCBkb1N0ZXBBY3Rpb24oaW50KTsKLSAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nVGltZXIo
KTsKLSAgICB2b2lkIHN0b3BSZXBlYXRpbmdUaW1lcigpOwotICAgIHZvaWQgcmVwZWF0aW5nVGlt
ZXJGaXJlZChUaW1lcjxTcGluQnV0dG9uRWxlbWVudD4qKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
SG92ZXJlZChib29sID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgU3RlcEFjdGlvbkhhbmRsZXIqIG1fc3Rl
cEFjdGlvbkhhbmRsZXI7Ci0gICAgYm9vbCBtX2NhcHR1cmluZzsKLSAgICBVcERvd25TdGF0ZSBt
X3VwRG93blN0YXRlOwotICAgIFVwRG93blN0YXRlIG1fcHJlc3NTdGFydGluZ1N0YXRlOwotICAg
IFRpbWVyPFNwaW5CdXR0b25FbGVtZW50PiBtX3JlcGVhdGluZ1RpbWVyOwotfTsKLQogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiAKIGNsYXNzIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAzMzgyZDNmYmQ5
MjQ4YTk0YjEyOWMwZTIyOGUzNzRjMGYyMjk2Yzk5Li45MzRjNGIyY2ZkOGVjNzliMTJhMWQwMTQ0
ZDM0YmZmMjMzODk3OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwaW5CdXR0
b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>