<?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>133480</bug_id>
          
          <creation_ts>2014-06-03 09:05:22 -0700</creation_ts>
          <short_desc>Refactor the srcset parser into its own file</short_desc>
          <delta_ts>2014-06-05 04:12:39 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoav Weiss">yoav</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013097</commentid>
    <comment_count>0</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-06-03 09:05:22 -0700</bug_when>
    <thetext>Refactor the srcset parser into its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013102</commentid>
    <comment_count>1</comment_count>
      <attachid>232429</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-06-03 09:23:00 -0700</bug_when>
    <thetext>Created attachment 232429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013153</commentid>
    <comment_count>2</comment_count>
      <attachid>232429</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-06-03 14:56:17 -0700</bug_when>
    <thetext>Comment on attachment 232429
Patch

Sure, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013159</commentid>
    <comment_count>3</comment_count>
      <attachid>232429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-03 15:07:10 -0700</bug_when>
    <thetext>Comment on attachment 232429
Patch

Rejecting attachment 232429 from commit-queue.

yoav@yoav.ws does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013168</commentid>
    <comment_count>4</comment_count>
      <attachid>232429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-03 15:44:57 -0700</bug_when>
    <thetext>Comment on attachment 232429
Patch

Clearing flags on attachment: 232429

Committed r169573: &lt;http://trac.webkit.org/changeset/169573&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013169</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-03 15:45:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013421</commentid>
    <comment_count>6</comment_count>
      <attachid>232429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-04 17:18:51 -0700</bug_when>
    <thetext>Comment on attachment 232429
Patch

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

&gt; Source/WebCore/html/parser/HTMLSrcsetParser.h:68
&gt; +// Space characters as defined by the HTML specification.
&gt; +bool isHTMLSpace(UChar);
&gt; +bool isHTMLLineBreak(UChar);
&gt; +bool isNotHTMLSpace(UChar);
&gt; +bool isHTMLSpaceButNotLineBreak(UChar character);

Wait, what? We don’t need these functions in two different header files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013422</commentid>
    <comment_count>7</comment_count>
      <attachid>232429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-04 17:19:10 -0700</bug_when>
    <thetext>Comment on attachment 232429
Patch

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

&gt; Source/WebCore/html/parser/HTMLSrcsetParser.h:48
&gt; +    String imageURL(const String&amp; srcAttribute, const String&amp; srcsetAttribute) const

This should take and return StringView.

&gt; Source/WebCore/html/parser/HTMLSrcsetParser.h:68
&gt; +// Space characters as defined by the HTML specification.
&gt; +bool isHTMLSpace(UChar);
&gt; +bool isHTMLLineBreak(UChar);
&gt; +bool isNotHTMLSpace(UChar);
&gt; +bool isHTMLSpaceButNotLineBreak(UChar character);

Wait, what</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013507</commentid>
    <comment_count>8</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-06-05 04:12:39 -0700</bug_when>
    <thetext>Both comments are resolved in a followup bug: https://bugs.webkit.org/show_bug.cgi?id=133504</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232429</attachid>
            <date>2014-06-03 09:23:00 -0700</date>
            <delta_ts>2014-06-04 17:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133480-20140603182238.patch</filename>
            <type>text/plain</type>
            <size>28154</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhNTViNjIxZDRiOWI0
NjkzNzM4ZjRlZjg3OTUxNGM0ODZkYWQ3MC4uNmNiYjZhZTUxOWQxNTk5MGRhZjI4ZTE5ODU3Mzhl
NjBjNzJkZTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTA2LTAzICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBzcmNzZXQgcGFy
c2VyIGludG8gaXRzIG93biBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM0ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoaXMgcGF0Y2ggZG9lc24ndCBjaGFu
Z2UgdGhlIHBhcnNlcidzIGJlaGF2aW9yLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhl
IHNyY3NldCBwYXJzZXIgaW50byBpdHMgb3duIGZpbGUsCisgICAgICAgIGluIG9yZGVyIHRvIHBy
ZXBhcmUgdGhlIGNvZGUgZm9yIGFsaWdubWVudCB3aXRoIHJlY2VudCBzcGVjIGNoYW5nZXMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcGFyZUJ5U2NhbGVGYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6YmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyk6IERlbGV0ZWQuCisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VXaXRoU2NhbGU6OkltYWdlV2l0aFNjYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlV2l0aFNjYWxlOjppbWFnZVVSTCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVdpdGhTY2FsZTo6c2NhbGVGYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFNyY3NldFBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUJ5
U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlV2l0aFNjYWxlOjpJbWFnZVdpdGhTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVdpdGhTY2FsZTo6aW1hZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VXaXRo
U2NhbGU6OnNjYWxlRmFjdG9yKToKKwogMjAxNC0wNS0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JvbGxpbmcgcGFnZXMgd2l0aCBsYXJnZSBU
aWxlZEJhY2tpbmcgY29udGVudCBsYXllcnMgY3JlYXRlcyB3YXkgdG9vIG1hbnkgdGlsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggNjQ3Y2U1OWI0NDk0NDYzMDM2ZTA4YTRkYjY0Y2Y5N2ExZmU4
NmMyOC4uNjNmMjcxODRiZjNjYzJmNjVhOGFjZjU4OTI0NTA1MWJlNGQ0OWVmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTE3MDYsNiArMTcwNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIv
SFRNTFNjcmlwdFJ1bm5lci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5j
cHAKKyAgICBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAog
ICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDZmZTY2MjIyZWRlMDAxOTc1
MWIzNGQ5ZjM3N2EwYjdjOGFiYTZjNWYuLmViMjZjZjNhMGQ5NzdkMTQ3M2EzMGUwNGUwZjJmZTM4
MWUwMzIyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagpAQCAtMTU4ODIsNiArMTU4ODIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxwYXJzZXJcSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTY3JpcHRSdW5uZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNvdXJjZVRyYWNrZXIuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNyY3NldFBh
cnNlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1M
VG9rZW5pemVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XEhUTUxUcmVlQnVpbGRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxUZXh0RG9jdW1lbnRQYXJzZXIuY3BwIiAvPgpAQCAtMjA2NzksNiArMjA2ODAsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNjcmlwdFJ1bm5l
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNjcmlw
dFJ1bm5lckhvc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XEhUTUxTb3VyY2VUcmFja2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MU3Jjc2V0UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MU3RhY2tJdGVtLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxodG1sXHBhcnNlclxIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlbml6ZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBiNDM0
ZWUxZWZmNWRkZmYzMjQ0ZjM0NjFiZTUxNzIwYjVkM2Y2YzA2Li4yMjQ2NzE5MWRhZjNkZTAyNjRl
MjEzOGE3NjEyYWJlNzFiOWUwOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00MTIyLDYgKzQxMjIsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNvdXJjZVRyYWNr
ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTcmNzZXRQ
YXJzZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tl
bml6ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTExMjA5LDYgKzExMjEyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXEhUTUxTb3VyY2VUcmFja2VyLmgiPgogICAgICAgPEZpbHRlcj5odG1s
XHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTFNyY3NldFBhcnNlci5oIj4KKyAgICAgIDxGaWx0ZXI+aHRt
bFxwYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTdGFja0l0ZW0uaCI+CiAgICAgICA8RmlsdGVyPmh0bWxc
cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjA4ZjA0NDAzZGE2Yjk1MjU0
OWY2ZWNjNzU5ZjQwNDU2ZmIwNjZjMi4uM2EzMTA0OWI0OTY2N2U2ODllOWE4ZDI0M2RkMzljZmMx
YmY0MjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjAwMyw2ICsyMDAzLDggQEAKIAkJNTJGNTJFMTExNEEwMTM0RjAwQUND
Mzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNTJFMTAxNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xs
ZXJJbXBEZXRhaWxzLm1tICovOyB9OwogCQk1MzE3NjEyMjEzQzUxNjY5MDAyNkU0NTQgLyogU3R5
bGVGbGV4aWJsZUJveERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMxNzYxMjAxM0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxleGlibGVCb3hE
YXRhLmNwcCAqLzsgfTsKIAkJNTMxNzYxMjMxM0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxleGli
bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzE3NjEyMTEzQzUxNjY5MDAyNkU0NTQgLyogU3R5bGVGbGV4aWJsZUJveERhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MzZENUEyMDE5
M0UxOEU5MDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2RDVBMUYxOTNFMThFOTAwQ0U0Q0FCIC8qIEhU
TUxTcmNzZXRQYXJzZXIuaCAqLzsgfTsKKwkJNTM2RDVBMjExOTNFMThFRTAwQ0U0Q0FCIC8qIEhU
TUxTcmNzZXRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM2RDVBMUUxOTNFMThEMDAwQ0U0Q0FCIC8qIEhUTUxTcmNzZXRQYXJzZXIuY3Bw
ICovOyB9OwogCQk1M0M4Mjk4RDEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3gu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDODI5
OEIxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmNwcCAqLzsgfTsKIAkJNTND
ODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M4Mjk4QzEzRDhEOTI3MDBERTJE
RUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1M0UyOUU1RTE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0UyOUU1QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dl
bmVyYXRlZC5jcHAgKi87IH07CkBAIC05MDU1LDYgKzkwNTcsOCBAQAogCQk1MkY1MkUxMDE0QTAx
MzRGMDBBQ0MzOTcgLyogTlNTY3JvbGxlckltcERldGFpbHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxNzYxMjAxM0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxl
eGlibGVCb3hEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0
eWxlRmxleGlibGVCb3hEYXRhLmNwcDsgcGF0aCA9IHN0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxNzYxMjExM0M1MTY2OTAwMjZF
NDU0IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFN0eWxlRmxleGlibGVCb3hEYXRhLmg7IHBhdGggPSBzdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzZENUExRTE5M0UxOEQw
MDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBIVE1MU3Jjc2V0UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9IVE1MU3Jj
c2V0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM2RDVBMUYxOTNF
MThFOTAwQ0U0Q0FCIC8qIEhUTUxTcmNzZXRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSFRNTFNyY3NldFBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0hUTUxTcmNzZXRQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDODI5OEIxM0Q4RDkyNzAw
REUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlckZsZXhpYmxlQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsZXhpYmxlQm94Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRTI5RTVDMTY3QThBMTkwMDU4NkQzRCAvKiBJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgxNjksNiArMTgxNzMsOCBAQAogCQkJCTk3N0IzODVEMTIyODgzRTkw
MEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVySG9zdC5oICovLAogCQkJCTk3N0UyRENCMTJGMEUy
ODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgKi8sCiAJCQkJOTc3RTJEQ0MxMkYw
RTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggKi8sCisJCQkJNTM2RDVBMUYxOTNF
MThFOTAwQ0U0Q0FCIC8qIEhUTUxTcmNzZXRQYXJzZXIuaCAqLywKKwkJCQk1MzZENUExRTE5M0Ux
OEQwMDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNlci5jcHAgKi8sCiAJCQkJOTdDMUY1NTIxMjI4
NTVDQjAwRURFNjE1IC8qIEhUTUxTdGFja0l0ZW0uaCAqLywKIAkJCQk5N0MxRjU1MjEyMjg1NUNC
MDBFREU2MTYgLyogSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM4NUUxMjI4ODNFOTAwQjgxRkY4
IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovLApAQCAtMjYyODEsNiArMjYyODcsNyBAQAogCQkJCUEx
NDgzMkJBMTg3RjYzRTkwMERBNjNBNiAvKiBXQUtWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE0ODMyQkIxODdGNjQzMjAwREE2M0E2IC8qIFdBS1dpbmRvdy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ3RjI5OTIxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUzNkQ1QTIwMTkzRTE4RTkwMENFNENBQiAvKiBIVE1MU3Jj
c2V0UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDdGMjk5NDEzRDRDMENCMDBBRDk1MzUg
LyogV2F2ZVNoYXBlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEN0YyOTk3MTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NTEyLDYgKzI3NTE5LDcgQEAKIAkJCQlCMjc1MzU3OTBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUw
RTU2OUIxODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjI3NTM1NkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MzZENUEyMTE5M0UxOEVFMDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRTaXplQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0EwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUQ3MkY2RDc5MTUzMTU5QTMw
MDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDZjMzQxYmM1MjEyMDJjNWFh
M2YyMzhkMTMyYjU0MDRkZTg3MTViZWMuLmVhNzgyZTVjNGFlYjc4NTAyMDcwYjEwZDgzZDFlZGFk
OWE5OWFkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJI
VE1MU3Jjc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYTIxODZiMTE3YjllN2YxY2U1MmVhYWVl
NThlZDcwYmY2MjdkNTE0My4uOTFhNjYwNmE5YzRjYjc3ZDc5MzAzYmNkNzYzZTY4OTc1NWQ0YjRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKQEAgLTI5MCwxMzIgKzI5MCw0IEBAIGJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGIpCiAgICAgcmV0dXJuIHRocmVhZFNh
ZmVFcXVhbCgqYS5sb2NhbE5hbWUoKS5pbXBsKCksICpiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKLXR5cGVkZWYgVmVjdG9yPEltYWdlV2l0aFNjYWxlPiBJbWFnZUNhbmRpZGF0ZXM7Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTY2FsZUZhY3Rvcihjb25zdCBJbWFnZVdpdGhTY2Fs
ZSYgZmlyc3QsIGNvbnN0IEltYWdlV2l0aFNjYWxlJiBzZWNvbmQpCi17Ci0gICAgcmV0dXJuIGZp
cnN0LnNjYWxlRmFjdG9yKCkgPCBzZWNvbmQuc2NhbGVGYWN0b3IoKTsKLX0KLQotc3RhdGljIGJv
b2wgcGFyc2VEZXNjcmlwdG9ycyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgc2l6ZV90IHN0YXJ0
LCBzaXplX3QgZW5kLCBmbG9hdCYgaW1hZ2VTY2FsZUZhY3RvcikKLXsKLSAgICBzaXplX3QgZGVz
Y3JpcHRvclN0YXJ0OwotICAgIHNpemVfdCBkZXNjcmlwdG9yRW5kOwotICAgIHNpemVfdCBwb3Np
dGlvbiA9IHN0YXJ0OwotICAgIGJvb2wgaXNGb3VuZFNjYWxlRmFjdG9yID0gZmFsc2U7Ci0gICAg
Ym9vbCBpc0VtcHR5RGVzY3JpcHRvciA9ICEoZW5kID4gc3RhcnQpOwotICAgIGJvb2wgaXNWYWxp
ZCA9IGZhbHNlOwotCi0gICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIHdoaWxl
IChpc0hUTUxTcGFjZShhdHRyaWJ1dGVbcG9zaXRpb25dKSAmJiBwb3NpdGlvbiA8IGVuZCkKLSAg
ICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgIGRlc2NyaXB0b3JTdGFydCA9IHBvc2l0aW9u
OwotICAgICAgICB3aGlsZSAoaXNOb3RIVE1MU3BhY2UoYXR0cmlidXRlW3Bvc2l0aW9uXSkgJiYg
cG9zaXRpb24gPCBlbmQpCi0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICBkZXNjcmlw
dG9yRW5kID0gcG9zaXRpb247Ci0KLSAgICAgICAgLy8gTGVhdmUgaWYgdGhlcmUgaXMgb25seSB3
aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0b3JzCi0gICAgICAgIGlmIChkZXNj
cmlwdG9yRW5kIDw9IGRlc2NyaXB0b3JTdGFydCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIC0tZGVzY3JpcHRvckVuZDsKLSAgICAgICAgLy8gVGhpcyBwYXJ0IGRpZmZlcnMgZnJvbSB0
aGUgc3BlYyBhcyB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBpeGVs
IGRlbnNpdHkgZGVzY3JpcHRvcnMuCi0gICAgICAgIGlmIChhdHRyaWJ1dGVbZGVzY3JpcHRvckVu
ZF0gIT0gJ3gnKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGlzRm91bmRT
Y2FsZUZhY3RvcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoYXR0
cmlidXRlLmlzOEJpdCgpKQotICAgICAgICAgICAgaW1hZ2VTY2FsZUZhY3RvciA9IGNoYXJhY3Rl
cnNUb0Zsb2F0KGF0dHJpYnV0ZS5jaGFyYWN0ZXJzOCgpICsgZGVzY3JpcHRvclN0YXJ0LCBkZXNj
cmlwdG9yRW5kIC0gZGVzY3JpcHRvclN0YXJ0LCAmaXNWYWxpZCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGltYWdlU2NhbGVGYWN0b3IgPSBjaGFyYWN0ZXJzVG9GbG9hdChhdHRyaWJ1dGUu
Y2hhcmFjdGVyczE2KCkgKyBkZXNjcmlwdG9yU3RhcnQsIGRlc2NyaXB0b3JFbmQgLSBkZXNjcmlw
dG9yU3RhcnQsICZpc1ZhbGlkKTsKLSAgICAgICAgaXNGb3VuZFNjYWxlRmFjdG9yID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaXNFbXB0eURlc2NyaXB0b3IgfHwgaXNWYWxpZDsKLX0KLQot
Ly8gU2VlIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBhbGdv
cml0aG0gdG8gZm9sbG93LgotLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1odG1sLXNy
Y3NldC0yMDEzMDIyOC8jcHJvY2Vzc2luZy10aGUtaW1hZ2UtY2FuZGlkYXRlcy4KLXN0YXRpYyB2
b2lkIHBhcnNlSW1hZ2VzV2l0aFNjYWxlRnJvbVNyY3NldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IHNyY3NldEF0dHJpYnV0ZSwgSW1hZ2VDYW5kaWRhdGVzJiBpbWFnZUNhbmRpZGF0ZXMpCi17Ci0g
ICAgQVNTRVJUKGltYWdlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpOwotCi0gICAgc2l6ZV90IGltYWdl
Q2FuZGlkYXRlU3RhcnQgPSAwOwotICAgIHVuc2lnbmVkIHNyY3NldEF0dHJpYnV0ZUxlbmd0aCA9
IHNyY3NldEF0dHJpYnV0ZS5sZW5ndGgoKTsKLQotICAgIHdoaWxlIChpbWFnZUNhbmRpZGF0ZVN0
YXJ0IDwgc3Jjc2V0QXR0cmlidXRlTGVuZ3RoKSB7Ci0gICAgICAgIGZsb2F0IGltYWdlU2NhbGVG
YWN0b3IgPSAxOwotICAgICAgICBzaXplX3Qgc2VwYXJhdG9yOwotCi0gICAgICAgIC8vIDQuIFNw
bGl0dGluZyBsb29wOiBTa2lwIHdoaXRlc3BhY2UuCi0gICAgICAgIHNpemVfdCBpbWFnZVVSTFN0
YXJ0ID0gc3Jjc2V0QXR0cmlidXRlLmZpbmQoaXNOb3RIVE1MU3BhY2UsIGltYWdlQ2FuZGlkYXRl
U3RhcnQpOwotICAgICAgICBpZiAoaW1hZ2VVUkxTdGFydCA9PSBub3RGb3VuZCkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAvLyBJZiBUaGUgY3VycmVudCBjYW5kaWRhdGUgaXMgZWl0aGVy
IHRvdGFsbHkgZW1wdHkgb3Igb25seSBjb250YWlucyBzcGFjZSwgc2tpcHBpbmcuCi0gICAgICAg
IGlmIChzcmNzZXRBdHRyaWJ1dGVbaW1hZ2VVUkxTdGFydF0gPT0gJywnKSB7Ci0gICAgICAgICAg
ICBpbWFnZUNhbmRpZGF0ZVN0YXJ0ID0gaW1hZ2VVUkxTdGFydCArIDE7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAvLyA1LiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2Yg
Y2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc3BhY2UgY2hhcmFjdGVycywgYW5kIGxldCB0aGF0IGJl
IHVybC4KLSAgICAgICAgc2l6ZV90IGltYWdlVVJMRW5kID0gc3Jjc2V0QXR0cmlidXRlLmZpbmQo
aXNIVE1MU3BhY2UsIGltYWdlVVJMU3RhcnQgKyAxKTsKLSAgICAgICAgaWYgKGltYWdlVVJMRW5k
ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBpbWFnZVVSTEVuZCA9IHNyY3NldEF0dHJpYnV0
ZUxlbmd0aDsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9IHNyY3NldEF0dHJpYnV0ZUxlbmd0aDsK
LSAgICAgICAgfSBlbHNlIGlmIChzcmNzZXRBdHRyaWJ1dGVbaW1hZ2VVUkxFbmQgLSAxXSA9PSAn
LCcpIHsKLSAgICAgICAgICAgIC0taW1hZ2VVUkxFbmQ7Ci0gICAgICAgICAgICBzZXBhcmF0b3Ig
PSBpbWFnZVVSTEVuZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIDcuIENvbGxl
Y3QgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCAiLCIgKFUrMDAyQykgY2hh
cmFjdGVycywgYW5kIGxldCB0aGF0IGJlIGRlc2NyaXB0b3JzLgotICAgICAgICAgICAgc2l6ZV90
IGltYWdlU2NhbGVTdGFydCA9IHNyY3NldEF0dHJpYnV0ZS5maW5kKGlzTm90SFRNTFNwYWNlLCBp
bWFnZVVSTEVuZCArIDEpOwotICAgICAgICAgICAgaW1hZ2VTY2FsZVN0YXJ0ID0gKGltYWdlU2Nh
bGVTdGFydCA9PSBub3RGb3VuZCkgPyBzcmNzZXRBdHRyaWJ1dGVMZW5ndGggOiBpbWFnZVNjYWxl
U3RhcnQ7Ci0gICAgICAgICAgICBzaXplX3QgaW1hZ2VTY2FsZUVuZCA9IHNyY3NldEF0dHJpYnV0
ZS5maW5kKCcsJyAsIGltYWdlU2NhbGVTdGFydCArIDEpOwotICAgICAgICAgICAgaW1hZ2VTY2Fs
ZUVuZCA9IChpbWFnZVNjYWxlRW5kID09IG5vdEZvdW5kKSA/IHNyY3NldEF0dHJpYnV0ZUxlbmd0
aCA6IGltYWdlU2NhbGVFbmQ7Ci0KLSAgICAgICAgICAgIGlmICghcGFyc2VEZXNjcmlwdG9ycyhz
cmNzZXRBdHRyaWJ1dGUsIGltYWdlU2NhbGVTdGFydCwgaW1hZ2VTY2FsZUVuZCwgaW1hZ2VTY2Fs
ZUZhY3RvcikpIHsKLSAgICAgICAgICAgICAgICBpbWFnZUNhbmRpZGF0ZVN0YXJ0ID0gaW1hZ2VT
Y2FsZUVuZCArIDE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzZXBhcmF0b3IgPSBpbWFnZVNjYWxlRW5kOwotICAgICAgICB9Ci0gICAgICAg
IEltYWdlV2l0aFNjYWxlIGltYWdlKGltYWdlVVJMU3RhcnQsIGltYWdlVVJMRW5kIC0gaW1hZ2VV
UkxTdGFydCwgaW1hZ2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGltYWdlQ2FuZGlkYXRlcy5hcHBl
bmQoaW1hZ2UpOwotICAgICAgICAvLyAxMS4gUmV0dXJuIHRvIHRoZSBzdGVwIGxhYmVsZWQgc3Bs
aXR0aW5nIGxvb3AuCi0gICAgICAgIGltYWdlQ2FuZGlkYXRlU3RhcnQgPSBzZXBhcmF0b3IgKyAx
OwotICAgIH0KLX0KLQotSW1hZ2VXaXRoU2NhbGUgYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmli
dXRlcyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgU3RyaW5nJiBzcmNBdHRyaWJ1dGUs
IGNvbnN0IFN0cmluZyYgc3Jjc2V0QXR0cmlidXRlKQotewotICAgIEltYWdlQ2FuZGlkYXRlcyBp
bWFnZUNhbmRpZGF0ZXM7Ci0KLSAgICBwYXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRy
aWJ1dGUoc3Jjc2V0QXR0cmlidXRlLCBpbWFnZUNhbmRpZGF0ZXMpOwotCi0gICAgaWYgKCFzcmNB
dHRyaWJ1dGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEltYWdlV2l0aFNjYWxlIHNyY1BsYWNlaG9s
ZGVySW1hZ2U7Ci0gICAgICAgIGltYWdlQ2FuZGlkYXRlcy5hcHBlbmQoc3JjUGxhY2Vob2xkZXJJ
bWFnZSk7Ci0gICAgfQotCi0gICAgaWYgKGltYWdlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBJbWFnZVdpdGhTY2FsZSgpOwotCi0gICAgc3RkOjpzdGFibGVfc29ydChpbWFn
ZUNhbmRpZGF0ZXMuYmVnaW4oKSwgaW1hZ2VDYW5kaWRhdGVzLmVuZCgpLCBjb21wYXJlQnlTY2Fs
ZUZhY3Rvcik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdlQ2FuZGlkYXRlcy5z
aXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgaWYgKGltYWdlQ2FuZGlkYXRlc1tpXS5zY2FsZUZh
Y3RvcigpID49IGRldmljZVNjYWxlRmFjdG9yKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlQ2Fu
ZGlkYXRlc1tpXTsKLSAgICB9Ci0KLSAgICAvLyAxNi4gSWYgYW4gZW50cnkgYiBpbiBjYW5kaWRh
dGVzIGhhcyB0aGUgc2FtZSBhc3NvY2lhdGVkIC4uLiBwaXhlbCBkZW5zaXR5IGFzIGFuIGVhcmxp
ZXIgZW50cnkgYSBpbiBjYW5kaWRhdGVzLAotICAgIC8vIHRoZW4gcmVtb3ZlIGVudHJ5IGIKLSAg
ICBzaXplX3Qgd2lubmVyID0gaW1hZ2VDYW5kaWRhdGVzLnNpemUoKSAtIDE7Ci0gICAgc2l6ZV90
IHByZXZpb3VzQ2FuZGlkYXRlID0gd2lubmVyOwotICAgIGZsb2F0IHdpbm5pbmdTY2FsZUZhY3Rv
ciA9IGltYWdlQ2FuZGlkYXRlcy5sYXN0KCkuc2NhbGVGYWN0b3IoKTsKLSAgICB3aGlsZSAoKHBy
ZXZpb3VzQ2FuZGlkYXRlID4gMCkgJiYgKGltYWdlQ2FuZGlkYXRlc1stLXByZXZpb3VzQ2FuZGlk
YXRlXS5zY2FsZUZhY3RvcigpID09IHdpbm5pbmdTY2FsZUZhY3RvcikpCi0gICAgICAgIHdpbm5l
ciA9IHByZXZpb3VzQ2FuZGlkYXRlOwotCi0gICAgcmV0dXJuIGltYWdlQ2FuZGlkYXRlc1t3aW5u
ZXJdOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKaW5kZXggODJlYmE2ZGRhZWU0ZWQ1MmM2ZTBmMTMyODI3NjA5ODlmMDUzYjVjNC4uNjU3
MzExMzk5MzIzM2M4Y2FkZDdiYmE4MDliMWRkNzE3MjUxMzNjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMzMsMzggKzMzLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNpbWFsOwogCi1jbGFzcyBJbWFnZVdpdGhTY2Fs
ZSB7Ci1wdWJsaWM6Ci0gICAgSW1hZ2VXaXRoU2NhbGUoKQotICAgICAgICA6IG1faW1hZ2VVUkxT
dGFydCgwKQotICAgICAgICAsIG1faW1hZ2VVUkxMZW5ndGgoMCkKLSAgICAgICAgLCBtX3NjYWxl
RmFjdG9yKDEpCi0gICAgewotICAgIH0KLQotICAgIEltYWdlV2l0aFNjYWxlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHNjYWxlRmFjdG9yKQotICAgICAgICA6IG1faW1h
Z2VVUkxTdGFydChzdGFydCkKLSAgICAgICAgLCBtX2ltYWdlVVJMTGVuZ3RoKGxlbmd0aCkKLSAg
ICAgICAgLCBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKQotICAgIHsKLSAgICB9Ci0KLSAgICBT
dHJpbmcgaW1hZ2VVUkwoY29uc3QgU3RyaW5nJiBzcmNBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYg
c3Jjc2V0QXR0cmlidXRlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1hZ2VVUkxM
ZW5ndGggPyBzcmNzZXRBdHRyaWJ1dGUuc3Vic3RyaW5nU2hhcmluZ0ltcGwobV9pbWFnZVVSTFN0
YXJ0LCBtX2ltYWdlVVJMTGVuZ3RoKSA6IHNyY0F0dHJpYnV0ZTsKLSAgICB9Ci0KLSAgICBmbG9h
dCBzY2FsZUZhY3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZUZhY3Rv
cjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pbWFnZVVSTFN0YXJ0OwotICAg
IHVuc2lnbmVkIG1faW1hZ2VVUkxMZW5ndGg7Ci0gICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKLX07
Ci0KIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uLgogYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hh
cik7CkBAIC0xMzEsOCArOTksNiBAQCBpbmxpbmUgYm9vbCBpc0hUTUxTcGFjZUJ1dE5vdExpbmVC
cmVhayhVQ2hhciBjaGFyYWN0ZXIpCiAKIGJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLUltYWdlV2l0aFNjYWxlIGJlc3RG
aXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0
IFN0cmluZyYgc3JjQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVNldEF0dHJpYnV0ZSk7
Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAppbmRleCBlMTAwMzY0Mzg1NDFjNTM5ZmQ1ODRhYzE3YzI3NDRmYTM4
NWU3MjEwLi5hNGEzYTE1MjZhYWE2NDQ3MTMwYTEwMzZiNWZiYjlmOGMwNzUwNTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIVE1MU3Jjc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAi
SFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAi
TGlua1JlbEF0dHJpYnV0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNyY3NldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U3Jjc2V0UGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzQ3NDNlYjBmYzFjODc1NDk5MTg4ZGQxNTUz
OTAzN2M5NzQzMzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxTcmNzZXRQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxJbWFnZVdpdGhTY2FsZT4gSW1hZ2VD
YW5kaWRhdGVzOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U2NhbGVGYWN0b3IoY29u
c3QgSW1hZ2VXaXRoU2NhbGUmIGZpcnN0LCBjb25zdCBJbWFnZVdpdGhTY2FsZSYgc2Vjb25kKQor
eworICAgIHJldHVybiBmaXJzdC5zY2FsZUZhY3RvcigpIDwgc2Vjb25kLnNjYWxlRmFjdG9yKCk7
Cit9CisKK3N0YXRpYyBib29sIHBhcnNlRGVzY3JpcHRvcnMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1
dGUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCwgZmxvYXQmIGltYWdlU2NhbGVGYWN0b3IpCit7
CisgICAgc2l6ZV90IGRlc2NyaXB0b3JTdGFydDsKKyAgICBzaXplX3QgZGVzY3JpcHRvckVuZDsK
KyAgICBzaXplX3QgcG9zaXRpb24gPSBzdGFydDsKKyAgICBib29sIGlzRm91bmRTY2FsZUZhY3Rv
ciA9IGZhbHNlOworICAgIGJvb2wgaXNFbXB0eURlc2NyaXB0b3IgPSAhKGVuZCA+IHN0YXJ0KTsK
KyAgICBib29sIGlzVmFsaWQgPSBmYWxzZTsKKworICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCkg
eworICAgICAgICB3aGlsZSAoaXNIVE1MU3BhY2UoYXR0cmlidXRlW3Bvc2l0aW9uXSkgJiYgcG9z
aXRpb24gPCBlbmQpCisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICBkZXNjcmlwdG9y
U3RhcnQgPSBwb3NpdGlvbjsKKyAgICAgICAgd2hpbGUgKGlzTm90SFRNTFNwYWNlKGF0dHJpYnV0
ZVtwb3NpdGlvbl0pICYmIHBvc2l0aW9uIDwgZW5kKQorICAgICAgICAgICAgKytwb3NpdGlvbjsK
KyAgICAgICAgZGVzY3JpcHRvckVuZCA9IHBvc2l0aW9uOworCisgICAgICAgIC8vIExlYXZlIGlm
IHRoZXJlIGlzIG9ubHkgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBkZXNjcmlwdG9ycwor
ICAgICAgICBpZiAoZGVzY3JpcHRvckVuZCA8PSBkZXNjcmlwdG9yU3RhcnQpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAtLWRlc2NyaXB0b3JFbmQ7CisgICAgICAgIC8vIFRoaXMgcGFy
dCBkaWZmZXJzIGZyb20gdGhlIHNwZWMgYXMgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25s
eSBzdXBwb3J0cyBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3JzLgorICAgICAgICBpZiAoYXR0cmli
dXRlW2Rlc2NyaXB0b3JFbmRdICE9ICd4JykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChpc0ZvdW5kU2NhbGVGYWN0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgaWYgKGF0dHJpYnV0ZS5pczhCaXQoKSkKKyAgICAgICAgICAgIGltYWdlU2NhbGVG
YWN0b3IgPSBjaGFyYWN0ZXJzVG9GbG9hdChhdHRyaWJ1dGUuY2hhcmFjdGVyczgoKSArIGRlc2Ny
aXB0b3JTdGFydCwgZGVzY3JpcHRvckVuZCAtIGRlc2NyaXB0b3JTdGFydCwgJmlzVmFsaWQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpbWFnZVNjYWxlRmFjdG9yID0gY2hhcmFjdGVyc1Rv
RmxvYXQoYXR0cmlidXRlLmNoYXJhY3RlcnMxNigpICsgZGVzY3JpcHRvclN0YXJ0LCBkZXNjcmlw
dG9yRW5kIC0gZGVzY3JpcHRvclN0YXJ0LCAmaXNWYWxpZCk7CisgICAgICAgIGlzRm91bmRTY2Fs
ZUZhY3RvciA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGlzRW1wdHlEZXNjcmlwdG9yIHx8
IGlzVmFsaWQ7Cit9CisKKy8vIFNlZSB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWls
cyBhYm91dCB0aGUgYWxnb3JpdGhtIHRvIGZvbGxvdy4KKy8vIGh0dHA6Ly93d3cudzMub3JnL1RS
LzIwMTMvV0QtaHRtbC1zcmNzZXQtMjAxMzAyMjgvI3Byb2Nlc3NpbmctdGhlLWltYWdlLWNhbmRp
ZGF0ZXMuCitzdGF0aWMgdm9pZCBwYXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBzcmNzZXRBdHRyaWJ1dGUsIEltYWdlQ2FuZGlkYXRlcyYgaW1hZ2VD
YW5kaWRhdGVzKQoreworICAgIEFTU0VSVChpbWFnZUNhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKKwor
ICAgIHNpemVfdCBpbWFnZUNhbmRpZGF0ZVN0YXJ0ID0gMDsKKyAgICB1bnNpZ25lZCBzcmNzZXRB
dHRyaWJ1dGVMZW5ndGggPSBzcmNzZXRBdHRyaWJ1dGUubGVuZ3RoKCk7CisKKyAgICB3aGlsZSAo
aW1hZ2VDYW5kaWRhdGVTdGFydCA8IHNyY3NldEF0dHJpYnV0ZUxlbmd0aCkgeworICAgICAgICBm
bG9hdCBpbWFnZVNjYWxlRmFjdG9yID0gMTsKKyAgICAgICAgc2l6ZV90IHNlcGFyYXRvcjsKKwor
ICAgICAgICAvLyA0LiBTcGxpdHRpbmcgbG9vcDogU2tpcCB3aGl0ZXNwYWNlLgorICAgICAgICBz
aXplX3QgaW1hZ2VVUkxTdGFydCA9IHNyY3NldEF0dHJpYnV0ZS5maW5kKGlzTm90SFRNTFNwYWNl
LCBpbWFnZUNhbmRpZGF0ZVN0YXJ0KTsKKyAgICAgICAgaWYgKGltYWdlVVJMU3RhcnQgPT0gbm90
Rm91bmQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gSWYgVGhlIGN1cnJlbnQgY2Fu
ZGlkYXRlIGlzIGVpdGhlciB0b3RhbGx5IGVtcHR5IG9yIG9ubHkgY29udGFpbnMgc3BhY2UsIHNr
aXBwaW5nLgorICAgICAgICBpZiAoc3Jjc2V0QXR0cmlidXRlW2ltYWdlVVJMU3RhcnRdID09ICcs
JykgeworICAgICAgICAgICAgaW1hZ2VDYW5kaWRhdGVTdGFydCA9IGltYWdlVVJMU3RhcnQgKyAx
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gNS4gQ29sbGVj
dCBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNwYWNlIGNoYXJhY3RlcnMs
IGFuZCBsZXQgdGhhdCBiZSB1cmwuCisgICAgICAgIHNpemVfdCBpbWFnZVVSTEVuZCA9IHNyY3Nl
dEF0dHJpYnV0ZS5maW5kKGlzSFRNTFNwYWNlLCBpbWFnZVVSTFN0YXJ0ICsgMSk7CisgICAgICAg
IGlmIChpbWFnZVVSTEVuZCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW1hZ2VVUkxFbmQg
PSBzcmNzZXRBdHRyaWJ1dGVMZW5ndGg7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSBzcmNzZXRB
dHRyaWJ1dGVMZW5ndGg7CisgICAgICAgIH0gZWxzZSBpZiAoc3Jjc2V0QXR0cmlidXRlW2ltYWdl
VVJMRW5kIC0gMV0gPT0gJywnKSB7CisgICAgICAgICAgICAtLWltYWdlVVJMRW5kOworICAgICAg
ICAgICAgc2VwYXJhdG9yID0gaW1hZ2VVUkxFbmQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyA3LiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qg
IiwiIChVKzAwMkMpIGNoYXJhY3RlcnMsIGFuZCBsZXQgdGhhdCBiZSBkZXNjcmlwdG9ycy4KKyAg
ICAgICAgICAgIHNpemVfdCBpbWFnZVNjYWxlU3RhcnQgPSBzcmNzZXRBdHRyaWJ1dGUuZmluZChp
c05vdEhUTUxTcGFjZSwgaW1hZ2VVUkxFbmQgKyAxKTsKKyAgICAgICAgICAgIGltYWdlU2NhbGVT
dGFydCA9IChpbWFnZVNjYWxlU3RhcnQgPT0gbm90Rm91bmQpID8gc3Jjc2V0QXR0cmlidXRlTGVu
Z3RoIDogaW1hZ2VTY2FsZVN0YXJ0OworICAgICAgICAgICAgc2l6ZV90IGltYWdlU2NhbGVFbmQg
PSBzcmNzZXRBdHRyaWJ1dGUuZmluZCgnLCcgLCBpbWFnZVNjYWxlU3RhcnQgKyAxKTsKKyAgICAg
ICAgICAgIGltYWdlU2NhbGVFbmQgPSAoaW1hZ2VTY2FsZUVuZCA9PSBub3RGb3VuZCkgPyBzcmNz
ZXRBdHRyaWJ1dGVMZW5ndGggOiBpbWFnZVNjYWxlRW5kOworCisgICAgICAgICAgICBpZiAoIXBh
cnNlRGVzY3JpcHRvcnMoc3Jjc2V0QXR0cmlidXRlLCBpbWFnZVNjYWxlU3RhcnQsIGltYWdlU2Nh
bGVFbmQsIGltYWdlU2NhbGVGYWN0b3IpKSB7CisgICAgICAgICAgICAgICAgaW1hZ2VDYW5kaWRh
dGVTdGFydCA9IGltYWdlU2NhbGVFbmQgKyAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VwYXJhdG9yID0gaW1hZ2VTY2FsZUVuZDsKKyAg
ICAgICAgfQorICAgICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZShpbWFnZVVSTFN0YXJ0LCBpbWFn
ZVVSTEVuZCAtIGltYWdlVVJMU3RhcnQsIGltYWdlU2NhbGVGYWN0b3IpOworICAgICAgICBpbWFn
ZUNhbmRpZGF0ZXMuYXBwZW5kKGltYWdlKTsKKyAgICAgICAgLy8gMTEuIFJldHVybiB0byB0aGUg
c3RlcCBsYWJlbGVkIHNwbGl0dGluZyBsb29wLgorICAgICAgICBpbWFnZUNhbmRpZGF0ZVN0YXJ0
ID0gc2VwYXJhdG9yICsgMTsKKyAgICB9Cit9CisKK0ltYWdlV2l0aFNjYWxlIGJlc3RGaXRTb3Vy
Y2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IFN0cmlu
ZyYgc3JjQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHNyY3NldEF0dHJpYnV0ZSkKK3sKKyAgICBJ
bWFnZUNhbmRpZGF0ZXMgaW1hZ2VDYW5kaWRhdGVzOworCisgICAgcGFyc2VJbWFnZXNXaXRoU2Nh
bGVGcm9tU3Jjc2V0QXR0cmlidXRlKHNyY3NldEF0dHJpYnV0ZSwgaW1hZ2VDYW5kaWRhdGVzKTsK
KworICAgIGlmICghc3JjQXR0cmlidXRlLmlzRW1wdHkoKSkgeworICAgICAgICBJbWFnZVdpdGhT
Y2FsZSBzcmNQbGFjZWhvbGRlckltYWdlOworICAgICAgICBpbWFnZUNhbmRpZGF0ZXMuYXBwZW5k
KHNyY1BsYWNlaG9sZGVySW1hZ2UpOworICAgIH0KKworICAgIGlmIChpbWFnZUNhbmRpZGF0ZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gSW1hZ2VXaXRoU2NhbGUoKTsKKworICAgIHN0ZDo6
c3RhYmxlX3NvcnQoaW1hZ2VDYW5kaWRhdGVzLmJlZ2luKCksIGltYWdlQ2FuZGlkYXRlcy5lbmQo
KSwgY29tcGFyZUJ5U2NhbGVGYWN0b3IpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bWFnZUNhbmRpZGF0ZXMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGlmIChpbWFnZUNhbmRp
ZGF0ZXNbaV0uc2NhbGVGYWN0b3IoKSA+PSBkZXZpY2VTY2FsZUZhY3RvcikKKyAgICAgICAgICAg
IHJldHVybiBpbWFnZUNhbmRpZGF0ZXNbaV07CisgICAgfQorCisgICAgLy8gMTYuIElmIGFuIGVu
dHJ5IGIgaW4gY2FuZGlkYXRlcyBoYXMgdGhlIHNhbWUgYXNzb2NpYXRlZCAuLi4gcGl4ZWwgZGVu
c2l0eSBhcyBhbiBlYXJsaWVyIGVudHJ5IGEgaW4gY2FuZGlkYXRlcywKKyAgICAvLyB0aGVuIHJl
bW92ZSBlbnRyeSBiCisgICAgc2l6ZV90IHdpbm5lciA9IGltYWdlQ2FuZGlkYXRlcy5zaXplKCkg
LSAxOworICAgIHNpemVfdCBwcmV2aW91c0NhbmRpZGF0ZSA9IHdpbm5lcjsKKyAgICBmbG9hdCB3
aW5uaW5nU2NhbGVGYWN0b3IgPSBpbWFnZUNhbmRpZGF0ZXMubGFzdCgpLnNjYWxlRmFjdG9yKCk7
CisgICAgd2hpbGUgKChwcmV2aW91c0NhbmRpZGF0ZSA+IDApICYmIChpbWFnZUNhbmRpZGF0ZXNb
LS1wcmV2aW91c0NhbmRpZGF0ZV0uc2NhbGVGYWN0b3IoKSA9PSB3aW5uaW5nU2NhbGVGYWN0b3Ip
KQorICAgICAgICB3aW5uZXIgPSBwcmV2aW91c0NhbmRpZGF0ZTsKKworICAgIHJldHVybiBpbWFn
ZUNhbmRpZGF0ZXNbd2lubmVyXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
NThiNTk2ZTI4NDk3MDMwM2RjOWJkY2Q3YmZhMDM0OWNjYmExODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmgKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhUTUxTcmNzZXRQYXJzZXJfaAorI2RlZmlu
ZSBIVE1MU3Jjc2V0UGFyc2VyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlV2l0aFNjYWxlIHsKK3B1YmxpYzoK
KyAgICBJbWFnZVdpdGhTY2FsZSgpCisgICAgICAgIDogbV9pbWFnZVVSTFN0YXJ0KDApCisgICAg
ICAgICwgbV9pbWFnZVVSTExlbmd0aCgwKQorICAgICAgICAsIG1fc2NhbGVGYWN0b3IoMSkKKyAg
ICB7CisgICAgfQorCisgICAgSW1hZ2VXaXRoU2NhbGUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCwgZmxvYXQgc2NhbGVGYWN0b3IpCisgICAgICAgIDogbV9pbWFnZVVSTFN0YXJ0KHN0
YXJ0KQorICAgICAgICAsIG1faW1hZ2VVUkxMZW5ndGgobGVuZ3RoKQorICAgICAgICAsIG1fc2Nh
bGVGYWN0b3Ioc2NhbGVGYWN0b3IpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBpbWFnZVVS
TChjb25zdCBTdHJpbmcmIHNyY0F0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiBzcmNzZXRBdHRyaWJ1
dGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZVVSTExlbmd0aCA/IHNyY3Nl
dEF0dHJpYnV0ZS5zdWJzdHJpbmdTaGFyaW5nSW1wbChtX2ltYWdlVVJMU3RhcnQsIG1faW1hZ2VV
UkxMZW5ndGgpIDogc3JjQXR0cmlidXRlOworICAgIH0KKworICAgIGZsb2F0IHNjYWxlRmFjdG9y
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjYWxlRmFjdG9yOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2ltYWdlVVJMU3RhcnQ7CisgICAgdW5zaWduZWQgbV9p
bWFnZVVSTExlbmd0aDsKKyAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOworfTsKKworLy8gU3BhY2Ug
Y2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCitib29sIGlz
SFRNTFNwYWNlKFVDaGFyKTsKK2Jvb2wgaXNIVE1MTGluZUJyZWFrKFVDaGFyKTsKK2Jvb2wgaXNO
b3RIVE1MU3BhY2UoVUNoYXIpOworYm9vbCBpc0hUTUxTcGFjZUJ1dE5vdExpbmVCcmVhayhVQ2hh
ciBjaGFyYWN0ZXIpOworCitJbWFnZVdpdGhTY2FsZSBiZXN0Rml0U291cmNlRm9ySW1hZ2VBdHRy
aWJ1dGVzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBTdHJpbmcmIHNyY0F0dHJpYnV0
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VTZXRBdHRyaWJ1dGUpOworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>