<?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>89578</bug_id>
          
          <creation_ts>2012-06-20 10:01:17 -0700</creation_ts>
          <short_desc>[CSS Shaders] Rename CustomFilterShader class name to CustomFilterCompiledProgram</short_desc>
          <delta_ts>2012-06-20 18:14:19 -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>Layout and Rendering</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="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653573</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-06-20 10:01:17 -0700</bug_when>
    <thetext>We have two classes that have similar name:
1. CustomFilterProgram - base class of the StyleCustomFilterProgram class which keeps references to the CSS Shaders
2. CustomFilterShader - object created as a result of compiling a CustomFilterProgram.

I suppose that CustomFilterShader can be changed to CustomFilterCompiledProgram to better show the link to the CustomFilterProgram and the fact that it stores the precompiled shader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654016</commentid>
    <comment_count>1</comment_count>
      <attachid>148682</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-06-20 16:58:04 -0700</bug_when>
    <thetext>Created attachment 148682
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654019</commentid>
    <comment_count>2</comment_count>
      <attachid>148682</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-06-20 17:05:40 -0700</bug_when>
    <thetext>Comment on attachment 148682
Patch V1

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654089</commentid>
    <comment_count>3</comment_count>
      <attachid>148682</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 18:14:14 -0700</bug_when>
    <thetext>Comment on attachment 148682
Patch V1

Clearing flags on attachment: 148682

Committed r120893: &lt;http://trac.webkit.org/changeset/120893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654090</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 18:14:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148682</attachid>
            <date>2012-06-20 16:58:04 -0700</date>
            <delta_ts>2012-06-20 18:14:14 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug89578.patch</filename>
            <type>text/plain</type>
            <size>43691</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTNhMDU3Mi4uYmFlZjVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDMsNyArMTIwMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYzZjY2NWEuLjg1MzA1ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wNi0yMCAgQWxleGFuZHJ1IENoaWN1bGl0
YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBSZW5hbWUgQ3Vz
dG9tRmlsdGVyU2hhZGVyIGNsYXNzIG5hbWUgdG8gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU3OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkndmUgcmVu
YW1lZCBDdXN0b21GaWx0ZXJTaGFkZXIgdG8gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIHRv
IG1ha2UgaXQgb2J2aW91cyB0aGF0IGl0IGlzIHRoZSByZXN1bHQgb2YgCisgICAgICAgIGNhbGxp
bmcgQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y29tcGlsZVByb2dyYW1XaXRoQ29udGV4dC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGp1c3QgcmVuYW1lZCBhbiBleGlzdGluZyBjbGFzcy4KKyAgICAg
ICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW06OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6dW5p
Zm9ybUxvY2F0aW9uQnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y29tcGlsZVByb2dyYW1XaXRoQ29udGV4dCk6IFJlbmFt
ZWQgbWV0aG9kIGZyb20gY3JlYXRlU2hhZGVyV2l0aENvbnRleHQgdG8gY29tcGlsZVByb2dyYW1X
aXRoQ29udGV4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOiBSZW5hbWVkIG1fc2hhZGVyIHRvIG1f
Y29tcGlsZWRQcm9ncmFtLgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6aW5p
dGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQ
cm9ncmFtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6Ymlu
ZFByb2dyYW1BbmRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZFQ3VzdG9t
RmlsdGVyKToKKwogMjAxMi0wNi0yMCAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbWFyayB1c2VkL2FsbG9jYXRlZCBKUyBo
ZWFwIG9uIHRoZSBuYXRpdmUgbWVtb3J5IGJhciBjaGFydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDIwMmY1ZWEuLjEzN2NkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzE5NSw4ICszMTk1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclByb2dyYW0uaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBkZDlmZGMwLi45OWMyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIyMzIsNyArMjIzMiw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck1lc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIuaCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJTaGFkZXIuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQYXJhbWV0ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmggXApAQCAtMzQxMyw3ICszNDEzLDcgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIFwKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBcCi0gICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBcCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAg
XAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5j
cHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBjODk3NGQyLi5mYWIyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
ODEwLDggKzM4MTAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNjE5ZTgyOS4u
NDgyMjcwNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTMxNDY5LDExICszMTQ2OSwxMSBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJ
CTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNc
Q3VzdG9tRmlsdGVyU2hhZGVyLmNwcCIKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIgogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtLmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZThiNWZk
Li5jNGJjYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDY1LDggKzE0NjUsOCBAQAogCQk1MEQ0MDNDODE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRl
ci5oICovOyB9OwogCQk1MEQ0MDVGOTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVz
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0
MDVGNzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi87IH07CiAJCTUw
RDQwNUZBMTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDVGODE0N0QzMUYzMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oICovOyB9OwotCQk1MEQ0MDYxMTE0N0Q0OURFMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0
ZXJTaGFkZXIuY3BwICovOyB9OwotCQk1MEQ0MDYxMjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9t
RmlsdGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi87
IH07CisJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5j
cHAgKi87IH07CisJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0uaCAqLzsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFB
QjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2
OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC04NTMzLDggKzg1MzMsOCBAQAogCQk1MEQ0
MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0
b21GaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBENDA1RjcxNDdEMzFG
MzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ0MDVGODE0
N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZp
bHRlck1lc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTBENDA2MEYxNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBwYXRoID0gZmlsdGVycy9D
dXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEQ0
MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5oOyBwYXRoID0gZmlsdGVy
cy9DdXN0b21GaWx0ZXJTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBE
NDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW0uY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDYxMDE0N0Q0OURFMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oOyBwYXRoID0gZmlsdGVy
cy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc5MDQsOCArMTc5MDQsOCBAQAogCQkJCTUwM0QwQ0E3MTRCNUIwODcwMEYzMkY1NyAvKiBD
dXN0b21GaWx0ZXJQcm9ncmFtLmNwcCAqLywKIAkJCQk1MDNEMENBODE0QjVCMDg3MDBGMzJGNTcg
LyogQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oICovLAogCQkJCTUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1
NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmggKi8sCi0JCQkJNTBENDA2MEYxNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi8sCi0JCQkJNTBENDA2MTAxNDdE
NDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oICovLAorCQkJCTUwRDQwNjBGMTQ3
RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwICovLAorCQkJ
CTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0u
aCAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNl
LmNwcCAqLywKIAkJCQk4NDczMEQ1QTEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291
cmNlLmggKi8sCiAJCQkJQTc1RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICov
LApAQCAtMjIyMDUsNyArMjIyMDUsNyBAQAogCQkJCTUwOUNDOUZCMTRDMDY5RUQwMEJCRUNCRCAv
KiBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwM0QwQ0FCMTRC
NUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MDNEMENBQzE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZp
bHRlclNoYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1
IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThD
QjQxM0UwRTg2MzNGRDAwMzJDNEYwIC8qIERhc2hBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgwRTZEMEIwQTE5ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTdCQzZBMjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1NzIwLDcgKzI1NzIwLDcgQEAKIAkJCQk1MEQ0MDVGOTE0N0QzMUYzMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MENDMEEzOTE0
QzZGNUIxMDAxN0FCNTEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUwM0QwQ0FBMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21G
aWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDA2MTExNDdENDlERTAwRDMw
QkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0JDNkEyMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdCQzZBMjMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1Nzcx
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKQEAgLTAsMCArMSwxNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KA
nSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIgorIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBTSEFERVIoU3JjKSAoI1NyYykK
KworU3RyaW5nIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6ZGVmYXVsdFZlcnRleFNoYWRl
clN0cmluZygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZlcnRleFNoYWRl
clN0cmluZywgU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAg
ICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90
ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1hdHJpeDsKKyAgICAg
ICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogYV9wb3Np
dGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworICAgICAgICB9Cisg
ICAgKSk7CisgICAgcmV0dXJuIHZlcnRleFNoYWRlclN0cmluZzsKK30KKworU3RyaW5nIEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZnJhZ21lbnRTaGFkZXJTdHJpbmcsIFNI
QURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcg
dmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICB9CisgICAgKSk7Cisg
ICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyU3RyaW5nOworfQorCitDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRTaGFkZXJTdHJpbmcpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1f
dmVydGV4U2hhZGVyU3RyaW5nKCF2ZXJ0ZXhTaGFkZXJTdHJpbmcuaXNOdWxsKCkgPyB2ZXJ0ZXhT
aGFkZXJTdHJpbmcgOiBkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCkpCisgICAgLCBtX2ZyYWdt
ZW50U2hhZGVyU3RyaW5nKCFmcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwoKSA/IGZyYWdtZW50
U2hhZGVyU3RyaW5nIDogZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkpCisgICAgLCBtX3By
b2dyYW0oMCkKKyAgICAsIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4
QXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAs
IG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEJveExvY2F0aW9uKC0x
KQorICAgICwgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3RpbGVTaXpl
TG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX3NhbXBs
ZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlclNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1f
Y29udGVudFNhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkK
K3sKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIG1fdmVydGV4U2hhZGVyU3RyaW5nKTsKKyAg
ICBpZiAoIXZlcnRleFNoYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFBsYXRmb3Jt
M0RPYmplY3QgZnJhZ21lbnRTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFHTUVOVF9TSEFERVIsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIGlmICghZnJh
Z21lbnRTaGFkZXIpIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hh
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Byb2dyYW0gPSBsaW5r
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBtX2NvbnRl
eHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGVsZXRlU2hh
ZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBpZiAoIW1fcHJvZ3JhbSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKTsKKyAgICAK
KyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y29tcGlsZVNoYWRlcihHQzNEZW51bSBzaGFkZXJUeXBl
LCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZykKK3sKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKHNoYWRlclR5cGUpOworICAgIG1fY29udGV4
dC0+c2hhZGVyU291cmNlKHNoYWRlciwgc2hhZGVyU3RyaW5nKTsKKyAgICBtX2NvbnRleHQtPmNv
bXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICAKKyAgICBpbnQgY29tcGlsZWQgPSAwOworICAgIG1f
Y29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9T
VEFUVVMsICZjb21waWxlZCk7CisgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBhbiBpbnZhbGlkIHNoYWRlci4gVGhyb3cgc29tZSBlcnJvcnMuCisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgorICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHNoYWRlcjsKK30KKworUGxhdGZvcm0zRE9iamVjdCBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgdmVy
dGV4U2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50U2hhZGVyKQoreworICAgIFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIG1f
Y29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgbV9jb250
ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgIG1fY29udGV4
dC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgCisgICAgaW50IGxpbmtlZCA9IDA7CisgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktf
U1RBVFVTLCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTog
SW52YWxpZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVy
cm9ycyBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQ0MTYKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHByb2dyYW07Cit9CisK
K3ZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9j
YXRpb25zKCkKK3sKKyAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBtX3RleEF0dHJp
YkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3Rl
eENvb3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3JkIik7CisgICAgbV90cmlhbmdsZUF0dHJp
YkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3Ry
aWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJveCIpOworICAgIG1fdGlsZVNpemVMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNp
emUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2pl
Y3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZSIpOworICAgIG1fc2FtcGxlclNpemVM
b2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4
dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X2NvbnRlbnRUZXh0dXJlIik7Cit9CisKK2lu
dCBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgLy8g
RklYTUU6IEltcHJvdmUgdGhpcyBieSBjYWNoaW5nIHRoZSB1bmlmb3JtIGxvY2F0aW9ucy4KKyAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCBuYW1lKTsK
K30KKyAgICAKK0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbSgpCit7CisgICAgaWYgKG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIwYzQ0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCkBAIC0w
LDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAq
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbV9oCisjZGVmaW5lIEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbV9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVy
dGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oY29udGV4dCwg
dmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpOworICAgIH0KKyAgICAKKyAgICB+Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtKCk7CisgICAgCisgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgU3RyaW5n
IGZyYWdtZW50U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0
cmluZzsgfQorICAgIAorICAgIGludCBwb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IHRleEF0dHJpYkxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNo
QXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hBdHRyaWJMb2NhdGlvbjsgfQor
ICAgIGludCB0cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmlhbmds
ZUF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hCb3hMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzaEJveExvY2F0aW9uOyB9CisgICAgaW50IHByb2plY3Rpb25NYXRyaXhMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uOyB9CisgICAgaW50
IHRpbGVTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplTG9jYXRpb247IH0K
KyAgICBpbnQgbWVzaFNpemVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFNpemVMb2Nh
dGlvbjsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZXJMb2NhdGlvbjsgfQorICAgIGludCBjb250ZW50U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50U2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJTaXplTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJTaXplTG9jYXRpb247IH0KKworICAgIGlu
dCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgYm9vbCBp
c0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisg
ICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9
CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnRTaGFkZXIpOworICAgIAorICAgIFBsYXRmb3JtM0RPYmplY3QgY29tcGlsZVNoYWRlcihHQzNE
ZW51bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZyk7CisgICAgUGxhdGZv
cm0zRE9iamVjdCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRlciwgUGxh
dGZvcm0zRE9iamVjdCBmcmFnbWVudFNoYWRlcik7CisgICAgdm9pZCBpbml0aWFsaXplUGFyYW1l
dGVyTG9jYXRpb25zKCk7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0VmVydGV4U2hh
ZGVyU3RyaW5nKCk7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJp
bmcoKTsKKyAgICAKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAg
ICAKKyAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21l
bnRTaGFkZXJTdHJpbmc7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsKKyAgICAK
KyAgICBpbnQgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RleEF0dHJpYkxv
Y2F0aW9uOworICAgIGludCBtX21lc2hBdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90cmlhbmds
ZUF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX21lc2hCb3hMb2NhdGlvbjsKKyAgICBpbnQgbV9w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGlsZVNpemVMb2NhdGlvbjsKKyAg
ICBpbnQgbV9tZXNoU2l6ZUxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKKyAg
ICBpbnQgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uOworICAgIGludCBtX2NvbnRlbnRTYW1wbGVyTG9j
YXRpb247CisgICAgCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAppbmRleCAxMzA0NDFhLi5mZTQzNjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgogCisjaW5jbHVk
ZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNsaWVudC5oIgotI2luY2x1ZGUgIkN1c3RvbUZpbHRlclNoYWRlci5oIgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC04MSwxMCAr
ODEsMTAgQEAgdm9pZCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpub3RpZnlDbGllbnRzKCkKIH0KIAog
I2lmIEVOQUJMRShXRUJHTCkKLVBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyU2hhZGVyPiBDdXN0b21G
aWx0ZXJQcm9ncmFtOjpjcmVhdGVTaGFkZXJXaXRoQ29udGV4dChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKK1Bhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21G
aWx0ZXJQcm9ncmFtOjpjb21waWxlUHJvZ3JhbVdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogewogICAgIEFTU0VSVChpc0xvYWRlZCgpKTsKLSAgICByZXR1cm4gQ3VzdG9t
RmlsdGVyU2hhZGVyOjpjcmVhdGUoY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdt
ZW50U2hhZGVyU3RyaW5nKCkpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW06OmNyZWF0ZShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJT
dHJpbmcoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBl
MDhjYmI3Li4xMjI5MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMzksNyAr
MzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
LWNsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjsKK2NsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbTsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQ7CiAKIC8vIFRoaXMgaXMgdGhl
IGJhc2UgY2xhc3MgZm9yIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gg
a25vd3MgaG93IHRvIGtlZXAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQqKTsKICAgICAKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+IGNyZWF0ZVNoYWRlcldp
dGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVQcm9ncmFtV2l0aENvbnRleHQoR3JhcGhpY3NDb250
ZXh0M0QqKTsKICNlbmRpZgogCiAgICAgLy8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhhcyB0
aGUgb25seSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2QuIFRoYXQgbWVh
bnMsIGl0IGNhc3RzIHRvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQpAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0m
IG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0aGF0IHRoZSBj
YWNoZWQgcmVzb3VyY2VzIGFyZQotICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMgcmVhZHkgdG8gY3Jl
YXRlIEN1c3RvbUZpbHRlclNoYWRlciBvYmplY3RzLgorICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMg
cmVhZHkgdG8gY3JlYXRlIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBvYmplY3RzLgogICAg
IHZvaWQgbm90aWZ5Q2xpZW50cygpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRleFNo
YWRlclN0cmluZygpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTExYzIyNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwot
ICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5l
IFNIQURFUihTcmMpICgjU3JjKQotCi1TdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0
VmVydGV4U2hhZGVyU3RyaW5nKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
dmVydGV4U2hhZGVyU3RyaW5nLCBTSEFERVIoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OwotICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwotICAgICAgICBhdHRyaWJ1
dGUgdmVjMiBhX3RleENvb3JkOwotICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0
cml4OwotICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdm9pZCBtYWlu
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRy
aXggKiBhX3Bvc2l0aW9uOwotICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Ci0g
ICAgICAgIH0KLSAgICApKTsKLSAgICByZXR1cm4gdmVydGV4U2hhZGVyU3RyaW5nOwotfQotCi1T
dHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZywg
U0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTsK
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhDb29yZCk7Ci0gICAgICAgIH0KLSAgICApKTsK
LSAgICByZXR1cm4gZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci19Ci0KLUN1c3RvbUZpbHRlclNoYWRl
cjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0
cmluZykKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJp
bmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRl
ZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKLSAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmco
IWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBk
ZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkKLSAgICAsIG1fcHJvZ3JhbSgwKQotICAgICwg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQotICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigt
MSkKLSAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQotICAgICwgbV90cmlhbmdsZUF0dHJp
YkxvY2F0aW9uKC0xKQotICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCi0gICAgLCBtX3Byb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigtMSkKLSAg
ICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKLSAgICAsIG1fc2FtcGxlckxvY2F0aW9uKC0xKQot
ICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQotICAgICwgbV9jb250ZW50U2FtcGxlckxv
Y2F0aW9uKC0xKQotICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQotewotICAgIFBsYXRmb3Jt
M0RPYmplY3QgdmVydGV4U2hhZGVyID0gY29tcGlsZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6
VkVSVEVYX1NIQURFUiwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcpOwotICAgIGlmICghdmVydGV4U2hh
ZGVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgUGxhdGZvcm0zRE9iamVjdCBmcmFnbWVu
dFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURF
UiwgbV9mcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlcikgewot
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIG1fcHJvZ3JhbSA9IGxpbmtQcm9ncmFtKHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIpOwotICAgIAotICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFk
ZXIpOwotICAgIAotICAgIGlmICghbV9wcm9ncmFtKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOwotICAgIAotICAgIG1faXNJbml0aWFs
aXplZCA9IHRydWU7Ci19Ci0KLVBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyU2hhZGVyOjpj
b21waWxlU2hhZGVyKEdDM0RlbnVtIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU3Ry
aW5nKQotewotICAgIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVT
aGFkZXIoc2hhZGVyVHlwZSk7Ci0gICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBz
aGFkZXJTdHJpbmcpOwotICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOwotICAg
IAotICAgIGludCBjb21waWxlZCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFk
ZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKTsKLSAgICBp
ZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIGludmFsaWQgc2hh
ZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NDE2Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KHNoYWRlcik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc2hh
ZGVyOwotfQotCi1QbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlclNoYWRlcjo6bGlua1Byb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21l
bnRTaGFkZXIpCi17Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtID0gbV9jb250ZXh0LT5j
cmVhdGVQcm9ncmFtKCk7Ci0gICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVy
dGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVu
dFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAKLSAg
ICBpbnQgbGlua2VkID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBH
cmFwaGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQpOwotICAgIGlmICghbGlua2Vk
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbnZhbGlkIHZlcnRleC9mcmFnbWVudCBzaGFkZXIgY29t
YmluYXRpb24uIFRocm93IHNvbWUgZXJyb3JzIGhlcmUuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgotICAgICAgICBtX2NvbnRleHQtPmRl
bGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gcHJvZ3JhbTsKLX0KLQotdm9pZCBDdXN0b21GaWx0ZXJTaGFkZXI6OmluaXRpYWxp
emVQYXJhbWV0ZXJMb2NhdGlvbnMoKQotewotICAgIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV9wb3NpdGlvbiIpOwot
ICAgIG1fdGV4QXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1f
cHJvZ3JhbSwgImFfdGV4Q29vcmQiKTsKLSAgICBtX21lc2hBdHRyaWJMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV9tZXNoQ29vcmQiKTsKLSAgICBt
X3RyaWFuZ2xlQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1f
cHJvZ3JhbSwgImFfdHJpYW5nbGVDb29yZCIpOwotICAgIG1fbWVzaEJveExvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9tZXNoQm94Iik7Ci0gICAg
bV90aWxlU2l6ZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9n
cmFtLCAidV90aWxlU2l6ZSIpOwotICAgIG1fbWVzaFNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaFNpemUiKTsKLSAgICBtX3Byb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJv
Z3JhbSwgInVfcHJvamVjdGlvbk1hdHJpeCIpOwotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAg
bV9zYW1wbGVyU2l6ZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9w
cm9ncmFtLCAidV90ZXh0dXJlU2l6ZSIpOwotICAgIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfY29udGVudFRleHR1
cmUiKTsKLX0KLQotaW50IEN1c3RvbUZpbHRlclNoYWRlcjo6dW5pZm9ybUxvY2F0aW9uQnlOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKLSAg
ICAvLyBGSVhNRTogSW1wcm92ZSB0aGlzIGJ5IGNhY2hpbmcgdGhlIHVuaWZvcm0gbG9jYXRpb25z
LgotICAgIHJldHVybiBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sIG5h
bWUpOwotfQotICAgIAotQ3VzdG9tRmlsdGVyU2hhZGVyOjp+Q3VzdG9tRmlsdGVyU2hhZGVyKCkK
LXsKLSAgICBpZiAobV9wcm9ncmFtKQotICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0o
bV9wcm9ncmFtKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmIC8vIEVOQUJM
RShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMzViYjEuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
Ci0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEN1c3RvbUZpbHRlclNoYWRlcl9oCi0jZGVmaW5lIEN1c3RvbUZp
bHRlclNoYWRlcl9oCi0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkK
LQotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0KLWNsYXNzIEN1c3RvbUZpbHRlclNoYWRl
cjogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyU2hhZGVyPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyU2hhZGVyPiBjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcm
IGZyYWdtZW50U2hhZGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0
b21GaWx0ZXJTaGFkZXIoY29udGV4dCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpOwot
ICAgIH0KLSAgICAKLSAgICB+Q3VzdG9tRmlsdGVyU2hhZGVyKCk7Ci0gICAgCi0gICAgU3RyaW5n
IHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5n
OyB9Ci0gICAgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFnbWVudFNoYWRlclN0cmluZzsgfQotICAgIAotICAgIGludCBwb3NpdGlvbkF0dHJpYkxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOyB9Ci0gICAgaW50
IHRleEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhBdHRyaWJMb2NhdGlvbjsg
fQotICAgIGludCBtZXNoQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hBdHRy
aWJMb2NhdGlvbjsgfQotICAgIGludCB0cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uOyB9Ci0gICAgaW50IG1lc2hCb3hMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEJveExvY2F0aW9uOyB9Ci0gICAgaW50IHByb2plY3Rp
b25NYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0
aW9uOyB9Ci0gICAgaW50IHRpbGVTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbGVT
aXplTG9jYXRpb247IH0KLSAgICBpbnQgbWVzaFNpemVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFNpemVMb2NhdGlvbjsgfQotICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQotICAgIGludCBjb250ZW50U2FtcGxlckxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2FtcGxlckxvY2F0aW9uOyB9Ci0gICAgaW50
IHNhbXBsZXJTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJTaXplTG9jYXRp
b247IH0KLQotICAgIGludCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxp
emVkOyB9Ci0gICAgCi0gICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9ncmFtOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRTaGFkZXIpOwotICAgIAotICAgIFBsYXRmb3JtM0RPYmplY3QgY29tcGlsZVNoYWRl
cihHQzNEZW51bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZyk7Ci0gICAg
UGxhdGZvcm0zRE9iamVjdCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRl
ciwgUGxhdGZvcm0zRE9iamVjdCBmcmFnbWVudFNoYWRlcik7Ci0gICAgdm9pZCBpbml0aWFsaXpl
UGFyYW1ldGVyTG9jYXRpb25zKCk7Ci0gICAgCi0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0VmVy
dGV4U2hhZGVyU3RyaW5nKCk7Ci0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RnJhZ21lbnRTaGFk
ZXJTdHJpbmcoKTsKLSAgICAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4
dDsKLSAgICAKLSAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7Ci0gICAgU3RyaW5nIG1f
ZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsK
LSAgICAKLSAgICBpbnQgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOwotICAgIGludCBtX3RleEF0
dHJpYkxvY2F0aW9uOwotICAgIGludCBtX21lc2hBdHRyaWJMb2NhdGlvbjsKLSAgICBpbnQgbV90
cmlhbmdsZUF0dHJpYkxvY2F0aW9uOwotICAgIGludCBtX21lc2hCb3hMb2NhdGlvbjsKLSAgICBp
bnQgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb247Ci0gICAgaW50IG1fdGlsZVNpemVMb2NhdGlv
bjsKLSAgICBpbnQgbV9tZXNoU2l6ZUxvY2F0aW9uOwotICAgIGludCBtX3NhbXBsZXJMb2NhdGlv
bjsKLSAgICBpbnQgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uOwotICAgIGludCBtX2NvbnRlbnRTYW1w
bGVyTG9jYXRpb247Ci0gICAgCi0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Ci19OwotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IDQ5ZjhjYzYuLjI3YTRmMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0
b21GaWx0ZXIuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
ICYmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJGRUN1c3RvbUZpbHRlci5oIgogCisjaW5jbHVk
ZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dC5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2guaCIKICNpbmNsdWRl
ICJDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCi0jaW5jbHVkZSAi
Q3VzdG9tRmlsdGVyU2hhZGVyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFRoZSBzaGFkZXIgaGFkIGNvbXBpbGVyIGVy
cm9ycy4gV2UgY2Fubm90IGRyYXcgYW55dGhpbmcuCi0gICAgaWYgKCFtX3NoYWRlci0+aXNJbml0
aWFsaXplZCgpKQorICAgIGlmICghbV9jb21waWxlZFByb2dyYW0tPmlzSW5pdGlhbGl6ZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lQnVmZmVyKTsKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIEZFQ3VzdG9tRmlsdGVyOjppbml0aWFsaXplQ29udGV4dCgpCiAgICAgLy8gRklY
TUU6IFRoZSBzaGFkZXIgYW5kIHRoZSBtZXNoIGNhbiBiZSBzaGFyZWQgYWNyb3NzIG11bHRpcGxl
IGVsZW1lbnRzIHdoZW4gcG9zc2libGUuCiAgICAgLy8gU2hhcmluZyB0aGUgc2hhZGVyIG1lYW5z
IGl0J3Mgbm8gbmVlZCB0byBhbmFseXplIC8gY29tcGlsZSBhbmQgdXBsb2FkIHRvIEdQVSBhZ2Fp
bi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MjcK
LSAgICBtX3NoYWRlciA9IG1fcHJvZ3JhbS0+Y3JlYXRlU2hhZGVyV2l0aENvbnRleHQobV9jb250
ZXh0LmdldCgpKTsKKyAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IG1fcHJvZ3JhbS0+Y29tcGlsZVBy
b2dyYW1XaXRoQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFNoYXJp
bmcgdGhlIG1lc2ggd291bGQganVzdCBzYXZlIHRoZSB0aW1lIG5lZWRlZCB0byB1cGxvYWQgaXQg
dG8gdGhlIEdQVSwgc28gSSBhc3N1bWUgd2UgY291bGQKICAgICAvLyBiZW5jaG1hcmsgdGhhdCBm
b3IgcGVyZm9ybWFuY2UuCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6
YmluZFByb2dyYW1QYXJhbWV0ZXJzKCkKICAgICBzaXplX3QgcGFyYW1ldGVyc1NpemUgPSBtX3Bh
cmFtZXRlcnMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVyc1Np
emU7ICsraSkgewogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtZXRlciA9IG1f
cGFyYW1ldGVycy5hdChpKS5nZXQoKTsKLSAgICAgICAgaW50IHVuaWZvcm1Mb2NhdGlvbiA9IG1f
c2hhZGVyLT51bmlmb3JtTG9jYXRpb25CeU5hbWUocGFyYW1ldGVyLT5uYW1lKCkpOworICAgICAg
ICBpbnQgdW5pZm9ybUxvY2F0aW9uID0gbV9jb21waWxlZFByb2dyYW0tPnVuaWZvcm1Mb2NhdGlv
bkJ5TmFtZShwYXJhbWV0ZXItPm5hbWUoKSk7CiAgICAgICAgIGlmICh1bmlmb3JtTG9jYXRpb24g
PT0gLTEpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXIt
PnBhcmFtZXRlclR5cGUoKSkgewpAQCAtMjU4LDMyICsyNTgsMzIgQEAgdm9pZCBGRUN1c3RvbUZp
bHRlcjo6YmluZFByb2dyYW1QYXJhbWV0ZXJzKCkKIAogdm9pZCBGRUN1c3RvbUZpbHRlcjo6Ymlu
ZFByb2dyYW1BbmRCdWZmZXJzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KQogewot
ICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICBtX2Nv
bnRleHQtPnVzZVByb2dyYW0obV9jb21waWxlZFByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgCi0g
ICAgaWYgKG1fc2hhZGVyLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMSkgeworICAgIGlmIChtX2Nv
bXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpIHsKICAgICAgICAgbV9jb250
ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTFpKG1fc2hhZGVyLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fY29tcGlsZWRQcm9ncmFtLT5zYW1wbGVyTG9j
YXRpb24oKSwgMCk7CiAgICAgICAgIG1faW5wdXRUZXh0dXJlLT5sb2FkKHNyY1BpeGVsQXJyYXkt
PmRhdGEoKSk7CiAgICAgICAgIG1faW5wdXRUZXh0dXJlLT5iaW5kVGlsZSgwKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKG1fc2hhZGVyLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSAhPSAtMSkg
eworICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkg
IT0gLTEpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeDsg
CiAgICAgICAgIG9ydGhvZ29uYWxQcm9qZWN0aW9uTWF0cml4KHByb2plY3Rpb25NYXRyaXgsIC0w
LjUsIDAuNSwgLTAuNSwgMC41KTsKICAgICAgICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0cml4WzE2
XTsKICAgICAgICAgcHJvamVjdGlvbk1hdHJpeC50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbFBy
b2plY3Rpb25NYXRyaXgpOwotICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9z
aGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpLCAxLCBmYWxzZSwgJmdsUHJvamVjdGlv
bk1hdHJpeFswXSk7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtX2NvbXBp
bGVkUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIDEsIGZhbHNlLCAmZ2xQcm9q
ZWN0aW9uTWF0cml4WzBdKTsKICAgICB9CiAgICAgCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fbWVzaC0+dmVydGljZXNCdWZmZXJP
YmplY3QoKSk7CiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpF
TEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9tZXNoLT5lbGVtZW50c0J1ZmZlck9iamVjdCgpKTsKIAog
ICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgYmluZFZlcnRleEF0dHJpYnV0ZShtX3NoYWRl
ci0+cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCA0LCBvZmZzZXQpOwotICAgIGJpbmRWZXJ0ZXhB
dHRyaWJ1dGUobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCksIDIsIG9mZnNldCk7Ci0gICAg
YmluZFZlcnRleEF0dHJpYnV0ZShtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCksIDIsIG9m
ZnNldCk7CisgICAgYmluZFZlcnRleEF0dHJpYnV0ZShtX2NvbXBpbGVkUHJvZ3JhbS0+cG9zaXRp
b25BdHRyaWJMb2NhdGlvbigpLCA0LCBvZmZzZXQpOworICAgIGJpbmRWZXJ0ZXhBdHRyaWJ1dGUo
bV9jb21waWxlZFByb2dyYW0tPnRleEF0dHJpYkxvY2F0aW9uKCksIDIsIG9mZnNldCk7CisgICAg
YmluZFZlcnRleEF0dHJpYnV0ZShtX2NvbXBpbGVkUHJvZ3JhbS0+bWVzaEF0dHJpYkxvY2F0aW9u
KCksIDIsIG9mZnNldCk7CiAgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpERVRBQ0hFRCkKLSAgICAgICAgYmluZFZlcnRleEF0dHJpYnV0ZShtX3NoYWRlci0+dHJp
YW5nbGVBdHRyaWJMb2NhdGlvbigpLCAzLCBvZmZzZXQpOworICAgICAgICBiaW5kVmVydGV4QXR0
cmlidXRlKG1fY29tcGlsZWRQcm9ncmFtLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCksIDMsIG9m
ZnNldCk7CiAgICAgCiAgICAgYmluZFByb2dyYW1QYXJhbWV0ZXJzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmgKaW5kZXggMDNiOWY4MC4uZjQxY2U3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaApAQCAtNDks
NyArNDksNyBAQCBjbGFzcyBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OwogY2xhc3MgQ3VzdG9t
RmlsdGVyTWVzaDsKIGNsYXNzIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcjsKIGNsYXNzIEN1
c3RvbUZpbHRlclByb2dyYW07Ci1jbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI7CitjbGFzcyBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW07CiBjbGFzcyBEcmF3aW5nQnVmZmVyOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogICAgIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgIFJl
ZlB0cjxUZXh0dXJlPiBtX2lucHV0VGV4dHVyZTsKLSAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyU2hh
ZGVyPiBtX3NoYWRlcjsKKyAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBt
X2NvbXBpbGVkUHJvZ3JhbTsKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyTWVzaD4gbV9tZXNoOwog
ICAgIEludFNpemUgbV9jb250ZXh0U2l6ZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>